Erstellen von generischen Methode-und mit dem type-parameter
Ich habe diese Methode, die ein Objekt Fabrik:
public static T GetService<T>(T serviceInterface)
{
if (serviceInterface.Equals(typeof(IMemberService)))
{
return (T)(object)new MemberService();
}
else if (serviceInterface.Equals(typeof(ILookupService)))
{
return (T)(object)new LookupService();
}
throw new ArgumentOutOfRangeException("No action is defined for service interface " + serviceInterface.Name);
}
Nun, ich möchte noch weiter gehen und die Notwendigkeit beseitigen, für "serviceInterface" - parameter, aber mein problem ist - ich weiß nicht, wie Sie vergleichen Sie Typ-parameter T, um eine Schnittstelle: tut
T.Equals(typeof(ILookupService))
gibt compiler-Fehlermeldung: 'T' a "- Typ-parameter', das gilt nicht in den gegebenen Kontext.
Irgendwelche Ideen, wie könnte ich vergleichen, einen parameter vom Typ einer Schnittstelle?
Danke,
Andrej
- Sie können wählen Sie Wert aus serviceInterface variable wie dieser -> stackoverflow.com/a/44114122/1580548
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
typeof(T)
zu bekommenType
- Objekt zurück, die Sie ersetzen könnten die Verwendung vonserviceInterface
Beispielsweise
CompositionContainer
hat diese API und in der Regel sind Sie Schnittstelle basiert.Verwenden
typeof(T)
.So,
Könnte die ist Betreiber werden hier anwendbar?
is
gilt für Gegenstände nicht Klassen, also Nein, es würde nicht die OP mit einer Lösung. Könnte es vielleicht sein verwendet in seinem originalen design, aber nicht, wenn das entfernen der parameter.IsAssignableFrom
) mit JaredPar Antwort, und Sie haben die komplette Lösung.