gpt4 book ai didi

c# - 使用保留字(类型名称)作为 ExpandoObject 或 Dynamic 属性

转载 作者:太空狗 更新时间:2023-10-30 01:30:43 27 4
gpt4 key购买 nike

我怎样才能使用保留字键设置 ExpandoObject 的属性?

像这样:

dynamic query = new ExpandoObject();
query.size = 10;
query.date = "2017-04-27";

dynamic match = new {
query = query,
bool = true
}

最佳答案

ExpandoObject您可以通过转换 ExpandoObject 来使用任何字符串值 作为属性名称(包括保留字、空格等,甚至是空字符串)实例到 IDictionary<string, object> :

dynamic query = new ExpandoObject();
(query as IDictionary<string, object>)["bool"] = true;
(query as IDictionary<string, object>)[" b o o (g)? l \"e:)\""] = false;
(query as IDictionary<string, object>)[""] = true;

但是您将无法使用“纯 C# 语法”(即 obj.prop)访问此类属性。您必须将对象转换为 IDictionary<string, object>并使用索引器访问它们:

var qDict = query as IDictionary<string, object>;
Console.WriteLine(qDict["bool"]);
Console.WriteLine(qDict[" b o o (g)? l \"e:)\""]);
Console.WriteLine(qDict[""]);
// Prints:
// True
// False
// True

关于c# - 使用保留字(类型名称)作为 ExpandoObject 或 Dynamic 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654062/

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