gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:51:00 25 4
gpt4 key购买 nike

只是探索 c# 4。试图让我的头脑了解所有这些动态的东西。对不起,如果这个问题很愚蠢,没有这个领域的经验。

如果我有一个 ExpandoObject 并想在运行时向它添加公共(public)属性(使用 get 和 set),我该怎么做呢?

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

感谢阅读!

最佳答案

我想知道如何“即时”向类(class)添加成员并想出了这个示例:

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 接口(interface)添加。我们通过直接访问它们并输出到控制台来测试键的存在和值(并证明概念)。

关于c# - 将未知(在设计时)属性添加到 ExpandoObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com