Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing Nullable Types in Generic Interface

So in a previous question I asked about implementing a generic interface with a public class and bingo, it works. However, one of the types I'm looking to pass in is one of the built in nullable types such as: int, Guid, String, etc.

Here's my Interface:

public interface IOurTemplate<T, U>
    where T : class
    where U : class
{
    IEnumerable<T> List();
    T Get(U id);
}

So when I implement this like so:

public class TestInterface : IOurTemplate<MyCustomClass, Int32>
{
    public IEnumerable<MyCustomClass> List()
    {
        throw new NotImplementedException();
    }

    public MyCustomClass Get(Int32 testID)
    {
        throw new NotImplementedException();
    }
}

I receive the error message: The type 'int' must be a reference type in order to use it as parameter 'U' in the generic type or method 'TestApp.IOurTemplate'

I've tried to infer the type Int32?, but same error. Any ideas?

like image 868
Jason N. Gaylord Avatar asked Aug 28 '09 03:08

Jason N. Gaylord


1 Answers

I wouldn't really do this but it's probably the only way to get it to work.

public class MyWrapperClass<T> where T : struct 
{
    public Nullable<T> Item { get; set; }   
}

public class MyClass<T> where T : class 
{

}
like image 81
ChaosPandion Avatar answered Oct 07 '22 02:10

ChaosPandion