У меня есть следующий код, когда я объявляю MyItem
, он будет автоматически добавлен в Roster
.
public class MyItem
{
private static Dictionary<string, string> Roster;
public static bool addToRoster(MyItem item)
{
if (Roster.ContainsKey(item.code))
return false;
Roster.Add(item.code, item.description);
return true;
}
public string code { get; protected set; }
public string description { get; protected set; }
public MyItem(string _code, string _desc)
{
code = _code;
description = _desc;
addToRoster(this);
}
}
Поэтому, когда я использую его, как показано ниже, словарь Roster
будет содержать 2 значения:
MyItem itema = new MyItem("code1", "desc1");
MyItem itemb = new MyItem("code2", "desc2");
MyItem itemc = new MyItem("code1", "desc1");
Пока все хорошо. Теперь у меня может быть несколько реестров, основанных на разных типах. Например, у меня могут быть Subject
, Room
и Building
. Я не хочу объявлять несколько классов, производных от класса MyItem
, это будет слишком много. Конечно, я могу добавить свойство
string RosterType { get; set; }
в MyItem
классе, но это создаст кучу избыточности данных.
Я думаю, что, может быть, я могу использовать атрибут, но кажется, что атрибут нельзя использовать на объекте.
Я пытаюсь найти что-то вроде этого
[RosterType("Room")]
MyItem item1("WJ203", "Room WJ203");
[RosterType("Subject")]
MyItem item2("MATH01", "Basic Math");
и измените Реестр на
private static Dictionary<string, Dictionary<string, string>> Rosters;
Затем я могу добавить предметы в разные списки на основе разных RosterType
. Но, похоже, я не могу установить атрибут объекта.
Что я должен сделать, чтобы заархивировать свою цель? Любая хорошая мысль?
Позвольте мне добавить некоторые детали
Данные, которые я получил, похожи на:
{
result: [
{
"propA": { "code":"XXX", "desc":"XXX" },
"propB": { "code":"XXX", "desc":"XXX" },
"propC": { "code":"XXX", "desc":"XXX" }
},
{
"propA": { "code":"XXX", "desc":"XXX" },
"propB": { "code":"XXX", "desc":"XXX" },
"propC": { "code":"XXX", "desc":"XXX" }
},
{
"propA": { "code":"XXX", "desc":"XXX" },
"propB": { "code":"XXX", "desc":"XXX" },
"propC": { "code":"XXX", "desc":"XXX" }
}]
}
Существует много разных типов результатов, и большинство из них представляют собой комбинации разных типов реквизита. все реквизиты в формате cod - desc. Я знаю, что это плохой дизайн, но я ничего не могу сделать со своей стороны. Мне нужно сохранить результат в разные таблицы, просто с кодом; а также необходимо сохранить весь код в разных таблицах кода. Все это должно быть сделано во время деарелизации. так что я прыгаю, чтобы сделать это в классе MyItem. Процедура категоризации может происходить в OnDesearlization. Так что для части результата я могу легко настроить свой класс на основе другого типа результата.