我开发了一个自定义 XMLDeserializer,它使用反射来反序列化我的游戏 (.xml) 的内容。但是我有一个错误,我在内容管道编译时没有弄清楚:
错误 1 构建内容抛出 MethodAccessException:尝试通过安全透明方法“DynamicClass.ReflectionEmitUtils(System.Object)”访问安全关键方法“System.Reflection.Assembly.get_PermissionSet()”失败。
程序集 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 标有 AllowPartiallyTrustedCallersAttribute,并使用 2 级安全透明模型。2 级透明度会导致 AllowPartiallyTrustedCallers 程序集中的所有方法默认变为安全透明,这可能是此异常的原因。
如果我注释掉此代码,则不会发生错误:
// Add item to the collection
if (typeof(IList).IsAssignableFrom(collectionType))
{
collectionType.GetMethod("Add").Invoke(collectionObject, new[] { itemObject });
}
else if (typeof(IDictionary).IsAssignableFrom(collectionType))
{
collectionType.GetMethod("Add").Invoke(collectionObject, new[] { itemType, itemObject });
}
看来我的程序集没有在 mscorlib 程序集中调用代码的权限。如果我在控制台应用程序中调用我的方法,它就可以工作。
你能帮助我吗?
谢谢