创建泛型类型的实例

时间:2015-12-05 23:27:51

标签: c#

我有以下内容:

ModelBuilder builder = new ModelBuilder();
builder.Entity<Model>().Add(new ModelMapper());

相反,我想按如下方式使用它:

ModelBuilder builder = new ModelBuilder();
builder.Add<ModelMapper>();

因此,ModelBuilder Add扩展将创建一个T的新实例并将其添加到builder.Entity()。Add(new T);

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这应该使用类型约束的组合来完成工作。您可能希望将其作为扩展方法。

public void Add<TEntity, TMapper>() 
    where TEntity : class
    where TMapper : EntityMapper<TEntity>, new()
{
    this.Entity<TEntity>().Add(new TMapper());
}

并像这样使用它:

builder.Add<Model, ModelMapper>();