我有一种实现“输出格式”,看起来有点像这样的接口类型的实例:C#:创建基于积分枚举值
public interface IFormatOutput {}
public class HtmlOutputFormatter : IFormatOutput {}
public class TextOutputFormatter : IFormatOutput {}
// etc, etc...
public enum OutputFormat {
Html,
Text,
HappyMeal,
Excel
}
public class SomeFormattableEntity {
int Id { get; set; }
OutputFormat OutputType { get; set; }
}
所以SomeFormattableEntity
在数据库中通过小巧玲珑的坚持并将其OutputType
属性存储为基础整数值(即,在INT
列中)。您可以猜到,我想提供一个IFormatOutput
的实例,以根据OutputType
属性处理SomeFormattableEntity
。
有没有一些干净的最佳实践方式来处理这种类型的关系?我的想法到目前为止,包括与内脏工厂可能包括:
- 爷爷的可怕丑陋的switch语句
- 数组枚举值映射到类型 基于反射
- 魔术映射枚举成员名称作为字符串类类型别处
- 涉及一些映射机制属性
我意识到这是不可取的,要求的东西,它的类型是基于价值的实例,但它本身当涉及SQL时,很难避免这种情况。基本上问题是,所有具有不同.NET类型的多个“事物”都存储在一个表中。我一直在使用这个成语,并且无法找到一个优雅的解决方案。