C#在运行时添加属性
我读过很少的post,而且我在运行时向类中添加属性时仍然遇到麻烦。 它应该很简单,因为我有一个这样的类:
public class MyClass { String Template; String Term; }
在运行时,我必须添加一些属性,如电话,电子邮件(它取决于……)。 有人可以解释一下如何在类初始化期间添加这些属性吗?
Srecko
我不认为在这里添加房产是正确的。 “电子邮件”或“电话”等属性只是键和值的一些附加对。 您可以使用Dictionary
,但这会阻止您多次使用某个键(例如,一个联系人的多个电子邮件地址)。 所以你也可以使用List
。 像那样:
public class MyClass { String Template; String Term; public List> Attributes { get; private set; } public MyClass() { Attributes = new List(); } public void AddAttribute(string key, string value) { Attributes.Add(new KeyValuePair(key, value)); } } // to be used like this: MyClass instance = new MyClass(); instance.AddAttribute("Email", "test@example.com"); instance.AddAttribute("Phone", "555-1234");
如果你有c#4.0,你可以使用Expando对象。
对于早期版本的c#,通常接受的方法是创建一个“属性包”,即键值对的集合(或字典)
dynamic foo = new ExpandoObject(); foo.Bar = "test";
你可以为你的Key / Value-Pairs添加一个字典。 然后,如果添加属性,只需将Key = Attributename
, Value = YourValue
到字典中即可。 阅读也很简单 – 只需从字典中获取Key = Attributename
的值即可。
- MvvmCross Monotouch – 无法在真实的iPad上绑定属性,但它可以在模拟器上运行
- 如何将WCF模板添加到Visual Studio Express?
- 在XAML中为WPF OxyPlot PlotViews设置样式
- 使用XUnit和ASP.NET Core 1.0进行dependency injection
- 如何在.NET Core中使用HttpClientHandler和HttpClientFactory
- C#Webforms在代码执行期间显示加载指示符
- 在2D数组中交换元素C#
- 将实体集转换为Ilist,其中Entity Collection未实现IEnumerable
- X509Certificate.CreateFromCertFile – 指定的网络密码不正确