【发布时间】:2010-06-08 07:57:09
【问题描述】:
我正在尝试从 .NET 3.5 应用程序检查 silverlight 4 程序集中的类型。我已经用 Assembly.ReflectionOnlyLoadFrom 语句加载了 silverlight 程序集。
contractsAssembly = Assembly.ReflectionOnlyLoadFrom(contractsAssemblyPath);
当 .NET 应用程序尝试调用 GetTypes() 时,它会引发 ReflectionTypeLoadException。
Type[] types = contractsAssembly.GetTypes();
ReflectionTypeLoadException 中的 LoaderExceptions 属性包含一个异常列表,所有这些异常都与加载具有序列化属性的类型有关。
程序集“YYYY”中的类型“XXXX”具有方法“OnSerializing”,其修饰的序列化属性的签名不正确。
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 之间的不兼容造成的。但是,我看到诸如 Reflector 之类的 .NET 工具可以检查此 Silverlight 程序集,因此有一种方法可以检查具有来自 .NET 应用程序的序列化属性的 Silverlight 程序集。有人可以帮我解释一下吗?
非常感谢。
何塞·安东尼奥
【问题讨论】:
标签: c# silverlight reflection serialization