Как получить перегруженные конструкторы класса через 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.

Имеют значение только Контракты на обслуживание, Контракты на эксплуатацию и Контракты на передачу данных.

если вам нужны дополнительные функции в вашем прокси-классе, вы всегда можете добавить частичный класс с тем же именем на стороне клиента и добавить к нему код. (перегруженные конструкторы и т. д.) следует помнить, что на самом деле сервер не заботится об этом.

Другие вопросы по тегам