[英]C# Type comparison
這使我大便,是否有以下任何原因:
public abstract class aExtension
{
public abstract bool LoadExtension(Constants c); // method required in inherit
public abstract string AppliesToModule // property required in inherit
{
get;
}
public abstract string ExtensionName // property required in inherit
{
get;
}
public abstract string ExtensionDescription // property required in inherit
{
get;
}
}
public class UK : aExtension
{
public override bool LoadExtension(Constants c)
{
return true;
}
public override string AppliesToModule
{
get { return "string"; }
}
public override string ExtensionName
{
get { return "string"; }
}
public override string ExtensionDescription
{
get { return "string"; }
}
}
對於以下表達式,將返回false:
bool a = t.IsAssignableFrom(aExtension));
bool b = t.BaseType.IsAssignableFrom(aExtension));
bool c = typeof(aExtension).IsAssignableFrom(t);
bool d = typeof(aExtension).IsAssignableFrom(t.BaseType);
bool e = typeof(aExtension).IsSubclassOf(t);
bool f = typeof(aExtension).IsSubclassOf(t.BaseType);
bool g = t.IsSubclassOf(typeof(aExtension));
bool h = t.BaseType.IsSubclassOf(typeof(LBT.AdMeter.aExtension));
bool i = t.BaseType.Equals(typeof(aExtension));
bool j = typeof(aExtension).Equals(t.BaseType);
T是英國calss的反射類型。
Stange的事情是我只是在同一應用程序的外部程序集上做完全相同的事情,並且按預期工作...
UK
可能會從該程序集的不同版本繼承aExtension
。
您周圍是否有相同程序集的副本? 如果從不同位置加載相同的裝配件,則類型不兼容。
您是否僅通過反射加載裝配件? 我認為我對此有疑問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.