DB表作为工厂配置

时间:2012-02-02 08:28:51

标签: c# design-patterns database-design

我们有一些域类型值表,即客户类型,操作类型等。

它的构建方式如下:TypeID,Display,...

通过这种方式,Web应用程序可以向用户显示显示并将ID发送到服务器端代码,在那里它可以与枚举相关或发送到工厂以便通过ID创建实例。

我正在考虑添加一个用于创建Type的信息列(即加载程序集时的类型),以便Activator可以创建实例,这样我就可以将配置缩小到上面的表格。

在添加列之前,我必须专门定义代码中的类型,如下所示:

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

如果我要添加该列,我可以做到:

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

此刻它对我来说还不错,所以我的问题是:

遵循良好原则吗?

它有任何缺陷吗?

顺便说一句,每个工厂都是提到here

的通用工厂

2 个答案:

答案 0 :(得分:1)

您确实需要在表格中存储类型名称吗?根据我的理解,TypeID与您的代码库中的Type密切相关,Factory.Register(id, typeof(MyClass));定义的很好。

如果您想在表格中存储类型名称,例如随时改变实施的能力也许你的方法很有用。但我个人认为这是不必要的,因为您可能不得不对其余代码进行更改以适应您所做的任何类型更改。

答案 1 :(得分:0)

在你的类型上有一个像[Id(“someId”)]这样的属性会不会更优雅,这样可以通过反射发现它而不需要调用Factory.Register?

PS。我会将其作为评论发布,但我还没有声誉。