如何将我的类上的重载构造函数传递给WCF客户端/使用者?
基本上,WCF认为我的B类只有默认的,没有参数/空构造函数。如何让客户端调用重载的构造函数?
public class A
{
public string MyField { get; set; }
}
public class B : A
{
public List<C> MyList { get; set; }
// when called on the WCF client side, MyList is null (so this constructor is not being called)
public B()
{
MyList = new List<C>();
}
// not available on WCF client side
public B(A a) : this()
{
base.MyField = a.MyField;
}
// not available on WCF client side
public void DoSomething()
{
// do stuff
}
}
答案 0 :(得分:2)
构造函数是wcf客户端不知道的仅类构造。界限不同。
客户端只知道代理类。 WCF基础结构使用默认构造函数创建代理类。独立于服务器端的构造函数,因为它们并不意味着从WCF的角度来看。
只有服务合同,操作合同和数据合同才有意义。
如果您希望在代理类中使用其他功能,则可以始终在客户端添加具有相同名称的分部类,并为其添加代码。 (重载的构造函数等)请注意服务器并不真正关心它。