我有几个这样的数据合同类:
[DataContract]
public class FooData
{
[DataMember]
public string Name;
// ... many more members
public FooData (string name) // again, many more arguments
{
Name = name;
// ...
}
}
由于FooData
始终用于通过线路传输Foo
个对象,因此我想添加一个构造函数,该构造函数接受Foo对象并相应地设置所有字段而不是手动执行({{ 1}})。
但是,这将要求FooData的用户包含Foo类型,该类型应该是服务器内部的。通常,这个问题可以通过使构造函数将Foo置于内部来解决,但在我的情况下,FooData与Foo不同。
我该如何处理?到目前为止,我的想法包括使用接口而不是类来传输数据,或者使用“扩展构造函数”。有更好的想法吗?
答案 0 :(得分:1)
只要不在标有DataMember的公共属性中公开该类型,在构造函数中包含Foo类型应该不是问题。 WCF将仅处理标记为DataMember的属性,因此您可以在数据协定中内部使用您的服务器类型。但是,客户端将无法看到接收“Foo”类型的构造函数,因此必须手动设置合同中的所有数据
由于 巴勃罗。