У меня проблема с моей службой 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'
и возникает вопрос: как я могу использовать делегатов в моей службе?
WCF не может сериализовать типы делегатов. Любые типы, используемые в контракте, должны быть сериализованы с использованием сериализатора данных контракта или Xml Serializer. – ajawad987
У меня есть устройство, которое имеет некоторые события в реальном времени, я хочу использовать его в уровне обслуживания, и ui может инициировать эти события, что я могу сделать? – HamidEbr
@HamidSOS, почему бы вам просто не позвонить своему клиенту операцию над сервисом, которая делает то, что делает делегат? – Crowcoder