pass Klasse als Typ-parameter in c# und mit dem Wörterbuch
Ich am erstellen einer Funktion, return-Wörterbuch und die möchte ich weitergeben Klassennamen als parameter. Aber seine gibt eine Fehlermeldung. Code, den ich geschrieben habe, ist unten gegeben
public Dictionary<object, object> GetDetails(Type Classname)
{
MvcDemoDBEntities db = new MvcDemoDBEntities();
Dictionary<Classname, object> dict = new Dictionary<Classname, object>();
var data = (from h in db.People
select h).ToList();
foreach (var item in data)
{
dict.Add(data, true);
}
return dict;
}
was mache ich falsch
und ich möchte rufen Sie diese Funktion mit einem Klassennamen dynamisch, wie diese :
List<people> list = GetDetails(people).Keys.ToList();
Menschen seinem meiner Klasse name.
- Es ist Klasse Typ, nicht der Klassenname. Bearbeitet ich Ihre Frage, um genauer zu sein
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Verwendung Von Generika
Ihren aktuellen Ansatz wird Ihnen viel Mühe. Wie Sie gehen, um pass ein Type-Objekt für die Klasse, müssen Sie die spiegelung erstellen zu können, die
Dictionary
.Als alternative schlage ich vor, Sie erstellen eine generische Methode:
Verwenden Sie es wie diese:
Mit Typ
Natürlich, dies kann über ein Objekt Geben, das requiers den Gebrauch der Reflexion in der Lage sein, ein Objekt zu erschaffen, von welcher Art wissen wir nicht (das Objekt ist das Wörterbuch). Dies geschieht wie folgt:
Verwenden, wie diese:
, Tiefer zu Graben
Mir aufgefallen, dass du diese Zeile:
Werden Sie möglicherweise daran interessiert, verändert
People
auf eine Eigenschaft mit dem Namen der Klasse übergeben. Dies kann nur archiviert werden, per reflection. In einer ähnlichen Weise wie wie wir haben, dieAdd
Methode des Wörterbuchs, die wir bekommen können eine Eigenschaft des Objektsdb
welcher name gegeben, durch den argument-Typ.Ich werde Euch wie eine zweite Methode aufgerufen werden, die von der ersten.
Die Verwendung Von Generika
Verwenden, ersetzen Sie diese:
Mit dabei:
Mit Typ
Hier der Kampf ist, dass wir nicht wissen, den Typ des Elements... also werde ich IEnumerable.
Verwenden, ersetzen Sie diese:
Mit dabei:
Müssen Sie
typeof
zu übergeben Sie den Typ Ihrer Klasse