使用工作单元以非通用方式调用泛型方法

时间:2016-02-05 13:01:46

标签: c# generics unit-of-work typeof

我知道它的标题,但这就是我定义问题的方式。 我的工作代码:

public class UnitOfWork : IUnitOfWork
{
    public MyContext MyContext { get; set; }
    public UnitOfWork(MyContext myContext)
    {
        MyContext = myContext;
    }

    public UnitOfWork()
    {
        MyContext = new MyContext();
    }

    public ICrudOperations<T> RepoCrudOperationsFor<T>() where T : class
    {
        return new CRUDoperations<T>(MyContext);
    }

    public async Task Complete()
    {
        await Task.Run(() =>
        {
            MyContext.SaveChanges();
        });
    }
}

现在假设我想通过工作单元创建一个实体。

这是我的班级,我想打电话

    public async Task CreateUnitOfWork()
    {
        _unitOfWork.MyContext = _db;

        _entityOneObj = new EntityOneObj
        {
            ObjectType = ObjectType.EntityOneObj,
            Text = _text = "Crud2",
            UserID = _userid = 9
        };

        await _unitOfWork.RepoCrudOperationsFor<EntityOneObj>().CreateAsync(_entityOneObj );
        await _unitOfWork.Complete();

    }    

这很好用。但问题是 &#34;我在这里定义&lt;&gt;内的实体名称我想创造。但实际上我不能这样做,而是我需要像那样和#34;

 Type type= typeof(EntityOneObj);

但我无法添加&#34;输入&#34;我的内心

 RepoCrudOperationsFor<type>
像那样。 什么是解决方案?我应该在我的工作单位或我的测试方法中定义吗?但是如何?

public interface ICrudOperations<T> where T : class 
{

    Task Create<T>(T objectType) where T : class;

    Task Delete<T>(T entity) where T : class;

    Task Update<T>(T entity) where T : class;


}

0 个答案:

没有答案