使用泛型的C#存储库

thd*_*thd 2 c# generics unit-testing repository repository-pattern

我有以下用于单元测试的存储库:

public class MyTestRepository<T>
{
    private List<T> entities = new List<T>();

    public IQueryable<T> Entities
    {
        get { return entities.AsQueryable(); }
    }

    public T New()
    {
        //return what here???
    }

    public void Create(T entity)
    {
        entities.Add(entity);
    }

    public void Delete(T entity)
    {
        entities.Remove(entity);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在New()方法中返回什么?

我试过这个:

    public T New()
    {
        return (T) new Object();
    }
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的单元测试时,这给了我以下异常:

System.InvalidCastException: Unable to cast object of type 'System.Object' to type 'MyCustomDomainType'.
Run Code Online (Sandbox Code Playgroud)

有关如何实现New()方法的任何想法?

Meh*_*ari 10

您可以为Ttype参数添加约束:

public class MyTestRepository<T> where T : new() 
Run Code Online (Sandbox Code Playgroud)

return new T();在方法中.