Search code examples
c#exceptioninterfacereferencereference-type

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?


Solution

  • 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 
    {
    
    }