将未知(在设计时)属性添加到ExpandoObject

只是探索c#4。试图让我了解所有这些动态的东西。抱歉,这个问题很傻,没有这个领域的经验。

如果我有一个ExpandoObject并想在运行时为其添加公共属性(带有get和set),我将如何做呢?

例如,我有一个documentTemplate和一个文档,该文档具有指向documentTemplate的属性。该documentTemplate具有一些标签Titles(例如,学生之间发展的能力),在制作文档时应解决这些问题(例如,浓度,记忆力等)。因此,一旦在文档中设置了模板,我就想创建一个类,该类具有与Template中的标签标题同名的属性,然后使用一些UI元素(例如PropertyGrid),使用户根据标签标题填写标签值。

谢谢阅读!

回答:

我想知道如何“动态”将成员添加到类中,并提出了以下示例:

using System;

using System.Collections.Generic;

using System.Dynamic;

class Program

{

static void Main()

{

dynamic expando = new ExpandoObject();

var p = expando as IDictionary<String, object>;

p["A"] = "New val 1";

p["B"] = "New val 2";

Console.WriteLine(expando.A);

Console.WriteLine(expando.B);

}

}

此代码段的重点是成员A和B被定义为其中的字符串文字(硬编码/字符串化),并通过ExpandoObject的IDictionary接口添加。我们通过直接访问键并输出到控制台来测试键的存在和值(并证明其概念)。

以上是 将未知(在设计时)属性添加到ExpandoObject 的全部内容, 来源链接: utcz.com/qa/408072.html

回到顶部