Dies kann eine Frage über das grundlegende Design sein.Schnittstelle, die einen Objekttyp deklariert
Ich möchte eine Operation auf einem Mystery-Objekt durchführen, solange es meine Schnittstelle IMyInterface implementiert. Und ich möchte eine der Methoden, die von der interace definiert eine Instanz des Geheimnisses Objekt zurückzukehren so ...
IMyInterface
{
object GetInstance();
}
public class MysteryObject : IMYInterface
}
public object GetInstance()
{
MysteryObject instance = new MysteryObject();
return instance;
}
}
aber dies führt zu unnötigen ‚Objekt‘ Typen und den Overhead mit jenen verbunden. C# tötet speziell diesen Overhead mit der Verwendung von generischen Typen. Es wäre ideal, so etwas zu tun:
IMyInterface
{
T GetInstance<T>();
}
public class MysteryObject : IMYInterface
}
public MysteryObject GetInstance<MysteryObject>()
{
MysteryObject instance = new MysteryObject();
return instance;
}
}
Ich weiß, dass dieses zweite Beispiel nicht funktioniert. Ich weiß, dass die Syntax falsch ist. ..aber ich frage mich, ob es eine bessere Möglichkeit gibt, zu verlangen, dass ein Objekt, das IMyInterface implementiert, eine Instanz seines eigenen Typs zurückgibt.
Meine Beispiele ein wenig seltsam, aber ich denke, die meisten werden das Gefühl verstehen. Seltsamerweise habe ich sehr kleine Beispiele oder Fragen dazu gefunden.
Es gibt fast keinen Overhead für Casting Referenztypen zu Objekt hin und her –