локальная функция клиента wcf - PullRequest
0 голосов
/ 04 сентября 2010

У меня есть следующий класс

[DataContract]
public class A
{
    private List<B> b= new List<B>();

    public float getSum()
    {
        float sum= 0;

        foreach (B b1 in b)
        {
            sum+= b1.sum;
        }

        return sum;
    }

    [DataMember]
    public int B
    {
        get { return b; }
        set { b = value; }
    }

Функция getSum () является функцией, специфичной для домена.
У меня есть служба wcf, размещенная в IIS и клиент wcf.

В клиентеМне нравится использовать класс A и вызывать функцию getSum ().
Функция должна быть локальной, а не удаленной.

Мне нравится использовать ее следующим образом:

A a = proxy.getA(101);

var1 = a.getSum();

A a1 = new A();
a1.setSomething
proxy.Insert(a1);

Как я могу сделать это с wcf?

1 Ответ

2 голосов
/ 04 сентября 2010

Единственный способ добиться этого - использовать ту же сборку, содержащую этот класс на клиенте, вместо создания прокси.Поэтому поместите этот класс в отдельную сборку, которую вы будете использовать совместно между клиентом и сервером.Очевидно, что если ваш клиент не является .NET, это будет невозможно.


Для повторного использования типов из данной сборки вы можете использовать переключатель /reference:<file path> при создании прокси-классавместо того, чтобы импортировать их из WSDL веб-службы и таким образом потерять getSum() (который, кстати, должен начинаться с заглавной буквы, чтобы следовать правилам кодирования):используете диалоговое окно Add Service Reference... в Visual Studio:

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...