Ich habe die folgende Klasse, die ich Entity Framework Model übergeben, wenn Sie eine Instanz davon machen.Wie kann ich eine neue Instanz einer Klasse zur Laufzeit mit C# erstellen?
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
};
}
...
...
...
}
Ich nenne dies noch oben Klasse von einer anderen Klasse wie so
var clientMapper = new TableMapper<Client>(QueryExtractor, "Client");
var = clientMapper.GetForeignRelation(x => x.Id);
Bitte beachten Sie, dass Client
ist ein Entity Framework 6-Modell.
von innerhalb meiner GetForeignRelation
Methode, habe ich die Art der Client
oder <TSource>
so kann ich zur Laufzeit eine neue Instanz der Klasse TableMapper
erstellen.
Hier ist, was ich versucht habe zu versuchen, eine neue Instanz zur Laufzeit zu erstellen.
var RunTimeModel = Activator.CreateInstance(relationsMapping.ModelType);
var RunTimeMapper = new TableMapper<RunTimeModel>(relationsMapping.QueryExtractor, relationsMapping.TableAlias);
Aber das gibt mir einen Fehler.
Der Typ oder Namespace-Namen
RunTimeModel
konnte nicht gefunden werden (sind Sie eine using-Direktive oder ein Assemblyverweis fehlt?)
Wie kann ich eine neue Instanz der gleichen Klasse zur Lauf korrekt erstellen Zeit?
Ich speichere 'typeof (TSource)' in eine Variable 'relationsMapping.ForeignRelation.ModelType' wie können Sie in meinem Code. dann übergebe ich das an die 'Activator.CreateInstance()', aber es funktioniert nicht für mich.Bitte beachten Sie den Fehler in meiner Frage – Jaylen
Ich verwende Fall ist ähnlich wie Sie codiert. Ich muss also eine Instanz von 'ReportRelation' erstellen. Bitte beachten Sie, dass' 'ein Entity Framework-Modell ist. –
Jaylen