리플렉션을 사용하여 내 게임 (.xml)의 내용을 deserialize하는 사용자 지정 XMLDeserializer를 개발했습니다. 'DynamicClass.ReflectionEmitUtils (은 System.Object)' 보안 투명한 방법으로 시도 : 1 개 건물의 내용에서는 MethodAccessException 던졌다리플렉션을 사용하여 게임 던지 내용을 deserialize합니다. MethodAccessException
오류 :하지만 콘텐츠 파이프 라인은 컴파일 할 때 내가 그것을 알아낼 수없는 오류가 보안에 액세스하려면 중요한 메서드 'System.Reflection.Assembly.get_PermissionSet()' 이 실패했습니다.
총회 '중립 mscorlib에, 버전 = 4.0.0.0, 문화 = 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에 어셈블리 코드를 호출 할 수있는 권한이없는 것 같습니다. 콘솔 응용 프로그램에서 내 메서드를 호출하면 작동합니다.
도와 주시겠습니까?
감사
그 중 하나는 작동하지 않습니다. 문제는 코드 자체가 아닙니다. 왜냐하면 콘솔 응용 프로그램 내에서 'Deserialize'메서드를 호출하면 작동하기 때문입니다. 하지만 ContentPipelineExtension 프로젝트에서 호출하면 작동하지 않습니다. – Xxbz