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 风格中,IsSubclassOfIsAssignableFrom 有什么替代方案吗?

我正在尝试使此代码在 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/… .. 那里缺少很多类型.. 您到底在寻找什么?如果你不说明你需要做什么,我无能为力。您最初的问题是IsSubclassOfIsAssignableFrom 是否有替代品...答案是肯定的:它们存在于TypeInfo

以上是关于C# Metro 风格中 IsSubclassOf 或 IsAssignableFrom 的任何替代方案的主要内容,如果未能解决你的问题,请参考以下文章

一个Metro风格的开源项目 MahApps.Metro

不能在 Metro 风格项目(WINRT)中使用 opencl

WinRT/Metro 风格应用程序中基于 ATL 的 COM 对象

全屏 WPF 程序中的 Metro 风格 Appbar

CSS Windows 8 Metro 风格应用程序中的 fr 单位是啥意思?

Windows 8 Metro 风格应用示例