Таблица БД как заводская конфигурация - PullRequest
0 голосов
/ 02 февраля 2012

У нас есть несколько таблиц для значений типа домена, например, Тип клиента, тип операции и т. Д.

он построен так: TypeID, Display, ...

Таким образом, веб-приложение можетпокажите дисплей пользователю и отправьте идентификатор на серверный код, там он может быть связан с перечислением или отправлен на фабрику для создания экземпляра по идентификатору.

Я думал добавитьинформационный столбец для создания Типа (т. е. его типа, если сборка загружена), чтобы Активатор мог создать экземпляр. Таким образом, я могу сузить конфигурацию до приведенной выше таблицы.

перед добавлением имеющегося у меня столбца.чтобы конкретно определить типы в коде, например, так:

Factory.Register(id, typeof(MyClass));

, если я добавлю этот столбец, я мог бы сделать это:

Factory.Register(id, Type.GetType(StringValueFromDB));

, он хорошо работает для меня вмомент, поэтому мои вопросы:

он следует хорошим принципам?

есть ли у него какой-то недостаток?

Кстати, каждая фабрика является общей фабрикой, как уже упоминалось здесь

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Вам действительно нужно хранить имя типа в вашей таблице? Из того, что я понимаю, TypeID тесно связан с Type в вашей кодовой базе, который Factory.Register(id, typeof(MyClass)); определяет просто отлично.

Если вы хотите сохранить имя типа в таблице, например, для возможность менять реализации на лету, тогда, возможно, ваш подход будет полезен. Но лично я думаю, что в этом нет необходимости, поскольку вам, вероятно, придется вносить изменения в остальную часть кода, чтобы учесть любые изменения типов, которые вы делаете в любом случае.

0 голосов
/ 02 февраля 2012

Разве не было бы более элегантно иметь атрибут типа [Id ("someId")] для ваших типов, чтобы его можно было обнаружить посредством отражения без вызова Factory.Register?

PS. Я бы опубликовал это как комментарий, но у меня пока нет репутации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...