我有一个WCF服务,我在共享程序集中与客户端共享类型 . 如果客户端创建派生类,是否可以将派生类型传递回服务,以便我可以通过反射读取添加的属性?
我尝试过使用KnownTypes,因为服务不知道如何反序列化派生类型 .
[Serializable]
public abstract class Car : ICar
{........
//在客户端:
[Serializable]
public class MyCar : Car
{......
当我将myCar传递给Service时,我得到了关于knownType的异常,但是我无法在服务器上添加它,因为我不知道客户端将发送什么,我想通过反射来处理额外的属性 .
可以在运行时将客户端类型注册为已知类型吗?
这可能是解决方案吗? http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx
2 回答
我认为有一种方法 .
我依稀记得当我学习WCF时,我遇到了ExtensionData,它应该是一种机制,可以获得与类的序列化不匹配的所有内容 . 例如,如果您启用ExtensionData并且您处于这种情况
在
关于如何启用ExtensionData,您可以轻松地在Web上搜索
这是不可能的 . 服务和客户端都必须知道将在消息中发送什么类型 . 如果要使用已知类型,则必须在服务上定义与父类型的关系 .
为什么需要知道服务器上添加的属性?