C# 具有Silverlight序列化属性的ReflectionTypeLoadException

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

我试图从.NET3.5应用程序中检查Silverlight4程序集中的类型。我已使用assembly.ReflectionOnlyLoadFrom语句加载silverlight程序集

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参数)来解决问题。谢谢