#.net #wcf #wcf-binding
#.net #wcf #wcf-привязка
Вопрос:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="TreeTraversalType", Namespace="http://schemas.datacontract.org/2004/07/DsLib")]
public enum TreeTraversalType : int
{
[System.Runtime.Serialization.EnumMemberAttribute()]
PreOrder = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
InOrder = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
PostOrder = 2,
}
из службы, предоставляющей следующий контракт
[OperationContract]
void PrintTraversePath(TreeTraversalType type);
Но на стороне клиента говорится, что Serialization
не содержит DataContractAttribute
.
Кроме того, ранее при компиляции службы я получил ошибку, несовместимую с CLS, для этого перечисления, но позже без каких-либо связанных изменений она разрешилась (должно быть, было изменено что-то еще, что, я не знаю, коррелирует с этим).
Мой вопрос в том, почему это поведение с ошибкой компиляции и что такое соответствие CLS. Не могу ли я указать тип enum в Contract
определении службы?
Ответ №1:
Перечисления отлично работают в контрактах. У вас есть ссылка на System.Runtime.Сериализация.dll (где определен DataContractAttribute) в вашем проекте?
Комментарии:
1. черт возьми! глупая ошибка. хм, я заставил его работать с помощью assembly ref. Спасибо. я запутался во всем этом классе привязки из-за более ранней ошибки, связанной с CLS. Кстати, связанный с моим 2-м вопросом, что заботиться о соответствии CLS в целом?
Ответ №2:
Может отсутствовать ссылка для среды выполнения.Пространство имен сериализации.
Перечисления не проблема. Они хорошо работают в контрактах с данными.