interface ISample
{
int Id { get; set; }
}
public class MyClass : ISample
{
public int Id
{
get;
set;
}
public string Name { get; set; }
}
Das obige ist eine Klasse, die eine Schnittstelle ISample implementiert. Mit Generics habe ich die folgende Methode hinzugefügt, um ein Objekt eines gegebenen Typs in einen anderen Typ umzuwandeln.Generic C# Casting
private TResult Sample<TSource, TResult>(TSource source)
where TSource : TResult
{
return (TResult)(source);
}
mit Generics wie kann ich die Rückseite der gleichen erreichen, die ein Objekt Sie ausreichend gegeben ist, ich will es konvertieren zurück zu MyClass Objekt, in dem Sie ausreichend die TSource und TResult ist MyClass wo TResult TSource implementiert.
Sie können dies nicht tun, denn wenn Sie eine Instanz von "ISample" haben, wer garantiert, dass es tatsächlich eine Instanz von 'MyClass' ist und nicht von irgendeiner anderen, die diese Schnittstelle implementiert? Wie auch immer, wieso hast du überhaupt diese Methode? Was macht es, was ein einfaches '(ISample) myInstanceOfMyClass' nicht für Sie tun wird? – HimBromBeere
Wenn 'TSource' von 'TResult' erbt (was Sie dort eingerichtet haben), kann jedes Objekt vom Typ 'TSource' bereits implizit auf ein 'TResult' umgewandelt werden. Allerdings glaube ich, dass wenn Sie es invertieren ('TResult' erbt von' TSource'), dass Sie _etwas_ garantieren können, dass eine Konvertierung möglich ist; oder Sie werden zumindest einen Compilerfehler anstelle einer Laufzeitausnahme bekommen. – Flater