Как получить перегруженные конструкторы класса через WCF?
Как я могу передать перегруженные конструкторы на моих классах клиенту / потребителю 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
}
}
1 ответ
Конструктор - это только конструкция класса, о которой клиент wcf не знает. Границы разные.
Клиент просто знает о прокси-классе. А инфраструктура WCF создает прокси-класс с конструкторами по умолчанию. Независимо от конструкторов на стороне сервера, потому что они ничего не значат с точки зрения WCF.
Имеют значение только Контракты на обслуживание, Контракты на эксплуатацию и Контракты на передачу данных.
если вам нужны дополнительные функции в вашем прокси-классе, вы всегда можете добавить частичный класс с тем же именем на стороне клиента и добавить к нему код. (перегруженные конструкторы и т. д.) следует помнить, что на самом деле сервер не заботится об этом.