2016-04-24 4 views
1

У меня проблема с моей службой wcf.Использование делегатов в справочной службе wcf

Вот мой класс обслуживания интерфейса:

// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. 
[ServiceContract] 
public interface ISahandService 
{ 
    [OperationContract] 
    bool uRunCommand(byte[] abyJson, ref byte[] abyData); 

    [OperationContract] 
    bool uFillSaatDic(ref List<DeviceInfo> liDev, ref string sErr); 

    [OperationContract] 
    void uSetDelegates(dlgDeviceConnectFunc uDeviceConnect, dlgServerBusyFunc uServerBusyFunc, 
     dlgAminConnection uAminFunc, dlgFingerUI uFingerUI, dlgOnFinger uOnFinger); 

    [OperationContract] 
    CompositeType GetDataUsingDataContract(CompositeType composite); 

    // TODO: Add your service operations here 
} 

и ошибка:

Не удалось добавить службу. Метаданные службы могут быть недоступны. Убедитесь, что ваша служба запущена и подвержена метаданным.

C: \ Users \ Admin \ AppData \ Local \ Temp \ Test Client Projects \ 12,0 \ 71e9b3ab-7556-4f8d-87c7-c8bae5868d3a \ Client.cs (391,26): ошибка CS0644: «SahandCL. dlgDeviceConnectFunc 'не может быть получен из специального класса' System.MulticastDelegate ' c: \ Users \ Admin \ AppData \ Local \ Temp \ Test Client Projects \ 12.0 \ 71e9b3ab-7556-4f8d-87c7-c8bae5868d3a \ Client.cs (403,26) : ошибка CS0644: «SahandCL.dlgServerBusyFunc» не может быть получен из специального класса «System.MulticastDelegate» c: \ Users \ Admin \ AppData \ Local \ Temp \ Test Client Projects \ 12.0 \ 71e9b3ab-7556-4f8d-87c7-c8bae5868d3a \ Client .cs (415,26): ошибка CS0644: «SahandCL.dlgAminConnection» не может быть получена из специального класса «System.MulticastDelegate» c: \ Users \ Admin \ AppData \ Local \ Temp \ Test Client Projects \ 12.0 \ 71 e9b3ab-7556-4f8d-87c7-c8bae5868d3a \ Client.cs (427,26): ошибка CS0644: «SahandCL.dlgFingerUI» не может быть получен из специального класса «System.MulticastDelegate» c: \ Users \ Admin \ AppData \ Local \ Temp \ Test Client Проекты \ 12,0 \ 71e9b3ab-7556-4f8d-87c7-c8bae5868d3a \ Client.cs (439,26): ошибка CS0644: 'SahandCL.dlgOnFinger' не может извлечь из специального класса 'System.MulticastDelegate'

и возникает вопрос: как я могу использовать делегатов в моей службе?

+1

WCF не может сериализовать типы делегатов. Любые типы, используемые в контракте, должны быть сериализованы с использованием сериализатора данных контракта или Xml Serializer. – ajawad987

+0

У меня есть устройство, которое имеет некоторые события в реальном времени, я хочу использовать его в уровне обслуживания, и ui может инициировать эти события, что я могу сделать? – HamidEbr

+0

@HamidSOS, почему бы вам просто не позвонить своему клиенту операцию над сервисом, которая делает то, что делает делегат? – Crowcoder

ответ

1

При определении контрактов WCF допускаются только известные типы.

Смежные вопросы