У меня есть стороннее приложение, которое предоставляет объект со многими «атрибутами», которые являются просто парами (строковых) ключей и значений.Типы значений могут быть строками, DateTime, Int32 или Int64.
Мне нужно создать свой собственный класс для удобного представления этого объекта.Я создаю сервис WCF, который предоставляет этот объект клиентам, поэтому мне нужно, чтобы он был очень простым и чистым.
Ключи атрибутов будут представлены в виде Enum для клиентов (чтобы скрыть информацию о конкретных строках ключей стороннего приложения).Тем не менее, я не уверен, как представлять значения.Вот некоторые из параметров:
Вариант 1: иметь разные коллекции для каждого значения атрибута, кажется уродливым, но для клиентов будет очень просто использовать
public class MyObject
{
public Dictionary<MyTextAttributeKeysEnum, string> TextAttributes { get; set; }
public Dictionary<MyDateAttributeKeysEnum, DateTime> DateAttributes { get; set; }
public Dictionary<MyNumAttributeKeysEnum, long> NumericAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }
Вариант 2: преобразовать всеатрибуты для строк
public class MyObject
{
public Dictionary<MyAttributeKeysEnum, string> MyAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }
Вариант 3: Храните их как объекты, пусть клиенты возятся с приведением и преобразованием
public class MyObject
{
public Dictionary<MyAttributeKeysEnum, object> MyAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }