Stworzyłem typ tak:Dlaczego IsAssignableFrom i GetInterface dać różne wyniki
TypeBuilder tb = moduleBuilder.DefineType(myname, TypeAttributes.Class |
TypeAttributes.Public, typeof(BaseClass), new Type[] { typeof(ImyInterface) });
Wtedy dużo kodu ilgenerating następująco dla konstruktorów, metod itp Kiedy zacznę pomocą klasy zauważyłem coś dziwnego. Chcę sprawdzić, czy typ "myname", który stworzyłem, naprawdę implementuje ImyInterface. Spodziewam się, że oba z poniższych stwierdzeń return true:
// t is Type 'myName'
Type baseInterface = t.GetInterface(typeof(ImyInterface).name);
if (baseType != null)
{
// this is actually true, as I expected
}
if (typeof(ImyInterface).isAssignableFrom(t))
{
// the if clause is false, but I don't have a clue why??
}
Więc stworzyliśmy klasa, która implementuje ImyInterface ale które nie jest przypisane do obiektu typu ImyInterface, czego mi brakuje?
Nawiasem mówiąc, nie ma udział leków generycznych, a interfejs jest po prostu podstawowy jeden przetestować koncepcję:
public interface ITestInterface
{
int CalcSquaredInteger(int number);
}
Czy są zaangażowane leki generyczne? w jaki sposób deklarowany jest interfejs? –
Brak generycznych, dodałem przykładowy interfejs do tego pytania. – Yodah
Co to jest "ImyInterface" w powyższym kodzie? Biorąc pod uwagę, że wywołujesz na niej "nazwę" usługi, nie może to być po prostu interfejs? –