Ich versuche zu überprüfen, ob eine offene generische Typdefinition eine offene generische Schnittstelle implementiert. Schauen Sie sich die Probe unter:So überprüfen Sie, ob eine generische Typdefinition von einer anderen generischen Typdefinition erbt
public interface IService<T> { }
public class ServiceImpl<T> : IService<T> { }
private static bool OpenGenericTypeImplementsOpenGenericInterface(
Type derivedType, Type interfaceType)
{
return derivedType.GetInterfaces().Contains(interfaceType);
}
[TestMethod]
public void Verify()
{
Type openGenericImplementation = typeof(ServiceImpl<>);
Type expectedInterfaceType = typeof(IService<>);
bool implDoesImplementInterface = OpenGenericTypeImplementsOpenGenericInterface(
openGenericImplementation, expectedInterfaceType);
// This assert fails. Why?
Assert.IsTrue(implDoesImplementInterface);
}
Ich fand heraus, dass der zurückTyp aus der Type.GetInterfaces()
Methode nicht die Art von typeof(IService<>)
zurück entspricht. Ich kann nicht herausfinden, warum das so ist und wie man korrekt überprüft, ob eine generische Typdefinition irgendeine andere generische Typdefinition erbt oder implementiert.
Was ist hier los und wie löse ich dieses Problem beheben?
In Zeile: Assert.IsTrue (OpenGenericTypeImplements) ;, was ist OpenGenericTypeImplements? – HABJAN
@HABJAN: Sie haben Recht. Einen Tippfehler gemacht. Behoben. – Anne