Wie kann ich den folgenden Code generisch machen, so dass ich am Ende eine einzige einfache Funktion anstelle von mehreren Funktionen in einer Reihe von Klassen bekommen kann?Wie wird diese C# -Methode generisch?
Die Aufrufe von FindObject und CreateObject sind Teil einer 3rd-Party-Bibliothek, also habe ich keine Kontrolle über die Parameter zu denen und es ist hier, dass ich stecken bleibe.
private MyClass1 FindClass1Object(string code)
{
MyClass1 myObject = FindObject<MyClass1>(code);
if (myObject == null)
{
myObject = CreateObject<MyClass1>();
myObject.Code = code;
}
return myObject;
}
private MyClass2 FindClass2Object(string code)
{
MyClass2 myObject = FindObject<MyClass2 >(code);
if (myObject == null)
{
myObject = CreateObject<MyClass2 >();
myObject.Code = code;
}
return myObject;
}
Ich weiß, dass ich in einem zusätzlichen Parameter übergeben kann einen Typ angeben, die ich suche/erstellen, aber dann wird der Code auf die Anrufe und Findobject Create stecken.
private object ReadClassFromXml (string code, Type myType)
{
object myObject = FindObject<myType>(code);
if (myObject == null)
{
myObject = CreateObject<myType>();
myType.GetProperty("Code").SetValue(myObject, code, null);
}
return myObject;
}
Wenn Sie vorgeschlagen haben, Reflection zu verwenden, um diese Methode aufzurufen, vorausgesetzt, Sie haben eine 'Type myType'-Variable, dann wäre dies eine goldene Antwort. – Enigmativity