如果在运行时之前不知道属性名称,如何为对象的某个属性赋值

时间:2016-10-31 17:53:22

标签: c# system.reflection

我不知道在运行时需要分配我的对象的哪个属性。

类实例是 sanitize(url: string):SafeUrl { return this.sanitizer.bypassSecurityTrustUrl(url); } ,它有几个属性定义为string:

servicerecord

让我们说在运行时,我发现程序需要分配一个字符串值,比如&#34; 11/2/2016&#34; (即日期的字符串表示)到public class ServiceRecord { public ServiceRecord(){} public string dos1 { get; set; } public string dos2 { get; set; } public string dos3 { get; set; } public string dos4 { get; set; } <snip> }

如何在C#中使用System.Reflection完成?

在javascript中它将是:servicerecord.dos3

通过字符串引用属性的C#对应部分是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用PropertyInfo执行此操作。

// Get property to write to.
PropertyInfo pi = _serviceRecord.GetType().GetProperty("dos3");
// Write value to property.
pi.SetValue(_serviceRecord, stringValue, null);

答案 1 :(得分:0)

听起来像你想要一个Dictionary<string,string>。请记住在ServiceRecord的构造函数

中初始化您的四个条目