У меня есть два приложения, которые общаются через WCF.
На сервере существует следующий объект:
public class MyObject<T>
{
...
public Entry<T> GetValue()
}
Где Entry<T>
- другой объект с T Data
в качестве публичной собственности. T может быть любым числом типов (строковые, двойные и т. Д.)
На клиенте у меня есть ClientObject<T>
, которому нужно получить значение Data
с сервера (того же типа).
Поскольку я использую WCF, я должен определить свой ServiceContract как интерфейс, и у меня не может быть ClientObject<T>
call Entry<T> GetMyObjectValue (string Name)
, который вызывает GetValue
на правильном MyObject<T>
, потому что мой интерфейс не знать о типе информации.
Я попытался реализовать отдельные функции GetValue (GetMyObjectValueDouble, GetMyObjectValueString) в интерфейсе, а затем ClientObject
определил правильную функцию для вызова. Однако Entry<T> val = (Entry<T>)GetMyObjectValueDouble(...);
не работает, потому что он не уверен в информации о типе.
Как мне получить общий объект поверх WCF с правильной информацией о типе? Дайте мне знать, если есть другие детали, которые я могу предоставить.
Спасибо!
Я использовал комбинацию методов, чтобы заставить это работать. Я реализовал несколько методов Entry<double> GetMyObjectValueDouble(...)
, Entry<string> GetMyObjectValueString(...)
на сервере. На клиенте я проверяю тип объекта и затем вызываю соответствующую функцию:
Entry<T> Data = (Entry<T>)Convert.ChangeType(Client.GetMyObjectValueDouble(...),typeof(Entry<T>));
Надеюсь, это кому-нибудь поможет