У меня есть стороннее приложение, которое предоставляет объект с множеством "атрибутов", которые являются просто парами (строковыми) ключами и значениями. Типы значений могут быть либо строками, DateTime, Int32, либо Int64.
Мне нужно создать собственный класс для представления этого объекта, удобным способом. Я создаю службу WCF, которая предоставляет этот объект клиентам, поэтому мне нужно, чтобы это было очень просто и чисто.
Ключи атрибутов будут представлены как перечисление для клиентов (чтобы скрыть информацию о конкретных ключевых строках стороннего приложения). Однако я не уверен, как представлять ценности. Вот некоторые из вариантов:
Вариант 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; }