我有以下的類,當我通過實體框架模型時,它的一個實例。如何在運行時使用c#創建類的新實例?
public class TableMapper<TSource>
{
protected IQueryExtractor QueryExtractor { get; set; }
protected string TableAliasPrefix { get; private set; }
public TableMapper(IQueryExtractor queryExtractor, string tableAliasPrefix = null)
{
QueryExtractor = queryExtractor;
TableAliasPrefix = tableAliasPrefix;
}
public IReportRelation GetForeignRelation<TProperty>(Expression<Func<TSource, TProperty>> property)
{
return new ReportRelation
{
Column = GetReportColumn(null, Self, property),
TableName = this.Table(),
TableAlias = this.GetSqlAlias(),
ModelType = typeof(TSource),
QueryExtractor = this.QueryExtractor
};
}
...
...
...
}
我把這上面的類還從另一個類,像這樣
var clientMapper = new TableMapper<Client>(QueryExtractor, "Client");
var = clientMapper.GetForeignRelation(x => x.Id);
請注意,Client
是實體框架6模型。
從我GetForeignRelation
方法中,我設置的Client
或<TSource>
的類型,所以我可以創建TableMapper
類在運行時一個新的實例。
這是我試圖在運行時嘗試創建它的一個新實例。
var RunTimeModel = Activator.CreateInstance(relationsMapping.ModelType);
var RunTimeMapper = new TableMapper<RunTimeModel>(relationsMapping.QueryExtractor, relationsMapping.TableAlias);
但是這給了我一個錯誤。
類型或命名空間名稱
RunTimeModel
找不到(你 缺少using指令或程序集引用?)
我怎樣才能正確地運行創建相同類的新實例時間?
我店'的typeof(TSource)'成變量'relationsMapping.ForeignRelation.ModelType'就像你可以在我的代碼中看到。然後我將它傳遞給'Activator.CreateInstance()',但它不適用於我。請參閱我的問題中的錯誤 – Jaylen
我使用的情況與您編碼的情況類似。所以我需要創建一個'ReportRelation'的實例請記住,''是一個實體框架模型 –
Jaylen