У моего клиента есть 10 таблиц, которые необходимо загрузить через внутренний WCF на сервер. Поскольку все это является внутренним, я могу написать как клиент, так и сервер, используя любую технику, которую я хочу.C# - WCF - Generics - [KnownType (typeof (xxx))]
На клиенте, я думал использовать LINQ для загрузки данных из таблиц в список, список и так далее ...
На сервере, я думал, чтобы иметь [DataContract] как следовать :
[DataContract]
[KnownType(typeof(Table1))]
[KnownType(typeof(Table2))]
[KnownType(typeof(Table3))]
public class GenericType<T>
{
[DataMember]
public List<T> Data { get; set; }
}
и затем добавить классы, которые будут представлять соответствующие таблицы на клиенте.
[DataContract]
public class Table1
{
[DataMember]
public int UserID { get; set; }
[DataMember]
public string FullName { get; set; }
}
[DataContract]
public class Table2
{
[DataMember]
public int UserID { get; set; }
[DataMember]
public string Address1 { get; set; }
}
[DataContract]
public class Table3
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
Когда я создаю ссылку клиента, я не получаю все классы, объявленные на сервере, и кажется, что только первый [KnownType] указывается на [DataContract] становится видимым для клиента.
Я был под впечатлением, что Дженерики должно было разрешить несколько типов но я право думать, что WCF может обрабатывать только один [KnownType] х класс ??
И если да, то мой единственный способ кодировать это будет скопируйте и вставьте 10 раз класс GenericType и на каждую копию измените [KnownType] ??
Причина, если это единственное решение, тогда каковы реальные преимущества использования Generic вместо прямого определения List, List для моих параметров?
Любая мысль поможет прояснить мой ум здесь
Проблема происходит потому, что если один из методов WCF не использует какой-либо из классов, объявленных [DataContract] ... кажется, что WCF НЕ приносит тех, классов для Клиента.
Это ожидаемый случай?
всегда полезно опубликовать обследование! – esskar
@esskar Обновлено –
«Я получаю сообщение об ошибке». Какая ошибка? Также KnownTypes «Table1», «Table2» и т. Д. Также должны быть отмечены [DataContract] и [DataMember]. – ErnieL