2

我需要创建一个具有单个属性的非常简单的对象。问题是这个属性的名称是可变的,直到运行时才知道。

我正在使用 c#。

我一直在环顾四周,发现了很多看起来很冗长的方法来做我想做的事情(例如,在运行时添加属性)。但是,这种类型的解决方案似乎有点矫枉过正,所以我真的希望有一种更简单的方法。

为什么?

我正在开发一个 WPF 应用程序。在某些情况下,我有想要处理空值的组合框。我已经在这里找到了一个很棒的解决方案:http: //philondotnet.wordpress.com/2009/09/18/how-to-select-null-none-in-a-combobox-listbox-listview/

但是,此解决方案的主要问题(如第二条评论所述)是,如果设置了 Selector 的 DisplayMemberPath,则空值文本显示为空白。解决这个问题的方法是简单地修改 NullItem 以返回一个具有属性的对象,其中属性的名称是 DisplayMemberPath,值是空值的字符串表示形式。

4

1 回答 1

1

你可以考虑使用

扩展对象

考虑到 ExpandoObject 实现了IDictionary,您可以将其转换为:

var expando = new System.Dynamic.ExpandoObject(); 
var expandoDic= expando as IDictionary<String, Object>;

expandoDic["Name"] = "Jane";
expandoDic["Surname"] = "Eyre";     
var name  = expandoDic["Name"]; 
var surname = expandoDic["Surname"]; 
var book = name + " " + surname;

这将是

《简爱》,果然不出所料;

于 2013-01-25T08:52:47.637 回答