将C#反射代码移植到Metro-Ui平台

3

我正在尝试移植一个使用反射的现有C#类(通用工厂),但是我无法使这段代码编译:

Type[] types = Assembly.GetAssembly(typeof(TProduct)).GetTypes();
foreach (Type type in types)
{
    if (!typeof(TProduct).IsAssignableFrom(type) || type == typeof(TProduct))
...

我尝试查看了.NET框架中的反射程序集类,在其中发现了一个例子,由于"using System.Security.Permissions"而无法编译。
1个回答

6

就像你链接的第一页所说,你需要使用TypeInfo而不是Type。还有其他变化,例如,Assembly有一个DefinedTypes属性,而不是GetTypes()方法。修改后的代码可能如下:

var tProductType = typeof(TProduct).GetTypeInfo();
var types = tProductType.Assembly.DefinedTypes; // or .ExportedTypes
foreach (var type in types)
{
    if (!tProductType.IsAssignableFrom(type) || type == tProductType)
    { }
}

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