C# Metro 风格中 IsSubclassOf 或 IsAssignableFrom 的任何替代方案
Posted
技术标签:
【中文标题】C# Metro 风格中 IsSubclassOf 或 IsAssignableFrom 的任何替代方案【英文标题】:Any alternative for IsSubclassOf or IsAssignableFrom in C# Metro-style 【发布时间】:2012-02-02 12:56:12 【问题描述】:在 C# Metro 风格中,IsSubclassOf
或 IsAssignableFrom
有什么替代方案吗?
我正在尝试使此代码在 Metro 上运行,但找不到替代方案。
if ((ui.GetType() == type) || (ui.GetType().IsSubclassOf(type)))
return true;
【问题讨论】:
【参考方案1】:你可以用这个:
using System.Reflection;
// ...
ui.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo());
这适用于 Metro。
【讨论】:
【参考方案2】:很多反射方法都可以在System.Reflection.TypeInfo
类中找到。
您可以使用System.Reflection.IntrospectionExtensions
提供的GetTypeInfo
扩展方法为您的Type
获取TypeInfo
的实例:
using System.Reflection;
// ...
ui.GetType().GetTypeInfo().IsSubclassOf(type)
【讨论】:
许多反射方法在 Metro 风格的 windows 8 .net 框架中不可用。这就是我寻找替代品的原因。但我认为没有其他选择,所以似乎必须使用显式类型的“is”或“as”。 @MichaelSync:我不明白你为什么说别无选择。TypeInfo
不适合你吗?如果没有,为什么不呢?
请查看 Metro .net 参考资料。 msdn.microsoft.com/en-us/library/windows/apps/… .. 那里缺少很多类型..
您到底在寻找什么?如果你不说明你需要做什么,我无能为力。您最初的问题是IsSubclassOf
和IsAssignableFrom
是否有替代品...答案是肯定的:它们存在于TypeInfo
。以上是关于C# Metro 风格中 IsSubclassOf 或 IsAssignableFrom 的任何替代方案的主要内容,如果未能解决你的问题,请参考以下文章
不能在 Metro 风格项目(WINRT)中使用 opencl
WinRT/Metro 风格应用程序中基于 ATL 的 COM 对象