如何根据数据库查找表中的值(使用企业库数据层)自动创建枚举并随后在C#中使用其值?
例如,如果我在数据库中添加一个新的查找值,我不想在代码中手动添加额外的静态枚举值声明 - 我想让枚举与数据库保持同步.
有这样的事吗?
我不想创建代码生成的静态枚举(根据代码项目文章枚举代码生成器 - 从数据库查找表自动生成枚举代码),并希望它是完全自动的.
上下文:.NET 3.5,VS2008.我不确定这个问题的标题,所以也可以自由评论标题:-)
这是场景:我有几个类,比如Foo和Bar,它们都实现了以下接口:
public interface IStartable
{
void Start();
void Stop();
}
Run Code Online (Sandbox Code Playgroud)
现在我想要一个容器类,它在构造函数中获取一个IEnumerable <IStartable>作为参数.反过来,这个类也应该实现IStartable接口:
public class StartableGroup : IStartable // this is the container class
{
private readonly IEnumerable<IStartable> startables;
public StartableGroup(IEnumerable<IStartable> startables)
{
this.startables = startables;
}
public void Start()
{
foreach (var startable in startables)
{
startable.Start();
}
}
public void Stop()
{
foreach (var startable in startables)
{
startable.Stop();
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如果不手动编写代码,并且没有代码生成,我怎么能这样做呢?换句话说,我想要像以下一样.
var arr = new IStartable[] { new Foo(), new Bar("wow") };
var mygroup = …Run Code Online (Sandbox Code Playgroud) 给定一个具有35个字段的类和2个具有一定数量的不同字段值的对象.是否有一种聪明的方法来获取列表<String>以及对象如下所示的字段名称?
例如
obj1.Name = "aaa";
obj1.LastName = "bbb";
obj1.Address = "xcs";
obj2.Name = "aaa";
obj2.LastName = "ccc";
obj2.Address = "jk";
Run Code Online (Sandbox Code Playgroud)
目的:
list<<String>String> containing 2 Strings LastName and Address
Run Code Online (Sandbox Code Playgroud)
我认为反射是要走的路,但是35场,恐怕太重了.还有其他想法,比如linq?
c# ×3
containers ×1
database ×1
dynamic ×1
enums ×1
generics ×1
interface ×1
linq ×1
reflection ×1