【发布时间】:2015-07-06 01:45:04
【问题描述】:
我的以下代码在 TargetFrameworkVersion 为 4.0 和 TargetFrameworkProfile 为 Profile104 的 PCL 中运行良好。
public class AppCapabilitiesRepository : IAppCapabilityRepository
{
private readonly Type _typeOfAppCapability = typeof (IAppCapability);
public IList<IAppCapability> GetCapabilities()
{
var capabilities = Assembly.GetExecutingAssembly().GetTypes().Where(IsAppCapability).ToArray();
var viewModels = capabilities.Select(capability => ((IAppCapability)Activator.CreateInstance(capability)))
.Where(c => c.IsActive)
.OrderBy(c => c.Popularity).ToList();
return viewModels;
}
private bool IsAppCapability(Type type)
{
return _typeOfAppCapability.IsAssignableFrom(type) && !type.IsAbstract && !type.IsInterface;
}
}
将项目升级到4.5的TargetFrameworkVersion和Profile259的TargetFrameworkProfile后,这些反射API就找不到了:
Assembly.GetExecutingAssembly、Type.IsAbstract 和 Type.IsInterface。
如果这很重要,此解决方案也使用 MvvmCross 3.5.1。
我现在该怎么办?
【问题讨论】:
-
如果您从 .net 4 更新到 .net 4.5,那么您需要更新反射代码以匹配 Microsoft 的更改 - 阅读blogs.msdn.com/b/dotnet/archive/2012/08/28/… 了解更多信息(非常快)跨度>
标签: c# reflection mvvmcross portable-class-library