C# 从名称/值对目录动态创建对象属性?
我有一个DB“设置”表,如下所示: MopedID、名称、值 我想在我的基本控制器中创建一个对象,该对象由存储在那里的任何对象的属性填充 因此,如果是: 32,“EnableHyperCanon”,“真” 当我从从基继承的任何控制器访问运行时的对象时,该对象将有权访问MopedSettings.enablephypercanon,它将是字符串值“True” 该对象将只具有它为ID 32找到的属性 有什么想法吗C# 从名称/值对目录动态创建对象属性?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个DB“设置”表,如下所示: MopedID、名称、值 我想在我的基本控制器中创建一个对象,该对象由存储在那里的任何对象的属性填充 因此,如果是: 32,“EnableHyperCanon”,“真” 当我从从基继承的任何控制器访问运行时的对象时,该对象将有权访问MopedSettings.enablephypercanon,它将是字符串值“True” 该对象将只具有它为ID 32找到的属性 有什么想法吗 编辑:也许更好的方法是MopedSettings[“EnableHyperCanon”
编辑:也许更好的方法是MopedSettings[“EnableHyperCanon”]有没有一种方法可以创建这样的对象?如果您运行的是.NET 4.0,您可以使用。使对象可索引:
class MopedSettings
{
private Dictionary<string,object> _dic;
public object this[string s] { get { return _dic[s]; }; set { _dic[s] = value; } }
}
class-MopedSettings
{
私人词典;
公共对象此[string s]{get{return{u dic[s];};set{u dic[s]=value;}
}
我希望这能有所帮助。奇怪的是,我在尝试填充此对象的实例时遇到一个对象引用为null的错误:List allSettings=(从db.CompanySettings中的cs开始,其中cs.CompanyID==company.CompanyID选择cs)。ToList(); foreach(CompanySetting cs in allSettings){companySettings[cs.Name]=cs.Value;}是的,您必须初始化字典(
\u dic=new Dictionary();
),并且不需要在get{}
语句后面加分号。