C# 具有Silverlight序列化属性的ReflectionTypeLoadException
我试图从.NET3.5应用程序中检查Silverlight4程序集中的类型。我已使用assembly.ReflectionOnlyLoadFrom语句加载silverlight程序集C# 具有Silverlight序列化属性的ReflectionTypeLoadException,c#,silverlight,reflection,serialization,C#,Silverlight,Reflection,Serialization,我试图从.NET3.5应用程序中检查Silverlight4程序集中的类型。我已使用assembly.ReflectionOnlyLoadFrom语句加载silverlight程序集 contractsAssembly = Assembly.ReflectionOnlyLoadFrom(contractsAssemblyPath); 当.NET应用程序尝试执行对GetTypes()的调用时,它会抛出ReflectionTypeLoadException Type[] types = contr
contractsAssembly = Assembly.ReflectionOnlyLoadFrom(contractsAssemblyPath);
当.NET应用程序尝试执行对GetTypes()的调用时,它会抛出ReflectionTypeLoadException
Type[] types = contractsAssembly.GetTypes();
ReflectionTypeLoadException中的LoaderExceptions属性包含异常列表,所有这些异常都与加载具有序列化属性的类型时出现的问题有关
程序集“YYYY”中的类型“XXXX”具有方法“OnSerialization”,该方法所修饰的序列化属性的签名不正确
XXXX类型中有以下定义:
[System.Runtime.Serialization.OnSerializing]
public void OnSerializing(System.Runtime.Serialization.StreamingContext context)
[System.Runtime.Serialization.OnSerialized]
public void OnSerialized(System.Runtime.Serialization.StreamingContext context)
[System.Runtime.Serialization.OnDeserializing]
public void OnDeserializing(System.Runtime.Serialization.StreamingContext context)
[System.Runtime.Serialization.OnDeserialized]
public void OnDeserialized(System.Runtime.Serialization.StreamingContext context)
我曾尝试将方法签名更改为内部或私有,但没有成功。当我在检查此程序集的silverlight应用程序中执行GetTypes()调用时,我没有遇到任何问题,因此我认为这是由于.NET Framework和silverlight之间不兼容造成的。但是,我看到.NET工具(如Reflector)可以检查此Silverlight程序集,因此有一种方法可以从.NET应用程序检查具有序列化属性的Silverlight程序集。有人能告诉我这件事吗
非常感谢
Jose Antonio事实上,我不认为这是关于Silverlight和.NET Framework之间的不兼容,而是关于3.5和4.0.NET Framework(2.0和4.0 CLR)之间的不兼容 ,我认为您可能也无法以动态方式成功加载它们
任何有类似错误的人,但在混合组件时除外 程序集“YYYY”中的类型“XXXX”具有方法“OnSerialization”,该方法所修饰的序列化属性的签名不正确 确保指定
StreamingContext
作为参数。我使用了以下方法,但由于上述错误而失败:
[OnDeserialized]
private void OnDeserialized()
{
Init();
}
尽管这个问题已经很老了,但我希望它能帮助别人。最后,我没有注意解决这个问题,所以放弃了这个问题。现在,我检查了源代码,发现一位mate采用了相同的方法(添加StreamingContext参数)来解决问题。谢谢