如何在C#的运行时向对象添加属性?
我有两个不同的清单。我想将这些列表合并到一个对象中。我不知道这些列表中的属性名称,这就是为什么我不能提前创建类的原因如何在C#的运行时向对象添加属性?,c#,oop,C#,Oop,我有两个不同的清单。我想将这些列表合并到一个对象中。我不知道这些列表中的属性名称,这就是为什么我不能提前创建类的原因 public class exampleConfigProperty { public string PropertName { get; set; }; public string PropertValue { get; set; }; } public class exampleFile { public string config1 { get; set; }
public class exampleConfigProperty
{
public string PropertName { get; set; };
public string PropertValue { get; set; };
}
public class exampleFile
{
public string config1 { get; set; };
}
List<exampleConfigProperty> myList = new List<exampleConfigProperty>();
myList.add(new exampleConfigProperty {
PropertName = "Config_Property_Name",
PropertValue = "Config Property Value"
});
List<exampleFile> myListTwo = new List<exampleFile>();
myListTwo.add(new exampleFile {
config1 = "Config Value"
});
总之,我尝试使用两个列表创建一个对象实例,
例如:
var resut = new {
Config_Property_Name = "Config Property Value",
config1 ="Config Value"
}
dynamic
类型不起作用,因此我应该如何使用两个列表来获取对象实例?既然您只想制作一个符合您标准的JSON:
var test=new Dictionary();//对于混合类型的值
测试[“键1”]=“值1”;
测试[“键2”]=“值2”;
var result=JsonConvert.SerializeObject(测试)//缩进以确保结果的可读性
//结果:
// {
//“键1”:“值1”,
//“键2”:“值2”
// }
动态
听起来很可能满足您的需求。当你说“不行”时,你到底是什么意思?你尝试了什么,出了什么问题?它会认为这将是一个更合适的解决方案,无论您在上面的代码中尝试做什么(我并不完全清楚其目的)。听起来您可能想使用类型为dictionary
的字典,而从技术上讲,可以创建具有动态属性名称的动态对象,当您想要使用这些属性时,真正的问题就出现了,这正是因为您不知道使用哪个属性名称来访问该属性。@404提出的字典方法是可行的,其中属性名被用作字典中的键。这允许您通过字符串变量中给定的属性名称获取值。这种愿望几乎总是由于设计过程中的早期错误造成的。。。例如,缺少接口。如果您只想从它生成JSON(而不想执行其他任务),则可以使用newtonsoft的JObject和相关类构建动态结构。
var resut = new {
Config_Property_Name = "Config Property Value",
config1 ="Config Value"
}