C# Metro-style中有没有IsSubclassOf或IsAssignableFrom的替代方法?

34

在 C# Metro-style 中是否有 IsSubclassOfIsAssignableFrom 的替代方法?

我正在尝试在 Metro 上运行此代码,但找不到替代方法。

if ((ui.GetType() == type) || (ui.GetType().IsSubclassOf(type)))
{
    return true;
}
2个回答

55

许多反射方法都可以在 System.Reflection.TypeInfo 类中找到。

您可以使用由 System.Reflection.IntrospectionExtensions 提供的 GetTypeInfo 扩展方法获取您的 TypeTypeInfo 实例:

using System.Reflection;

// ...

ui.GetType().GetTypeInfo().IsSubclassOf(type)

许多反射方法在Metro风格的Windows 8 .NET框架中不可用。这就是我寻找替代方案的原因。但我认为没有替代方案,所以似乎必须使用带有显式类型的“is”或“as”。 - Michael Sync
@MichaelSync:我不明白你为什么说没有替代方案。TypeInfo对你不起作用吗?如果不是,那为什么? - James McNellis
请查看metro .net参考文档。http://msdn.microsoft.com/en-us/library/windows/apps/hh441595(v=vs.110).aspx .. 那里缺少了很多类型.. - Michael Sync
11
你究竟需要什么?如果你不说明你需要做什么,我就无法帮忙。你最初的问题是是否有IsSubclassOfIsAssignableFrom的替代方法......答案是肯定的:它们存在于TypeInfo中。 - James McNellis

17

你可以使用以下代码:

using System.Reflection;

// ...

ui.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo());

这在 Metro 中可行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接