gpt4 book ai didi

c# - 复杂匿名对象到动态公共(public)属性

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:48 24 4
gpt4 key购买 nike

如何在动态对象中公开匿名对象的复杂结构?

匿名对象被标记为内部,所以我正在寻找一种创造性的方法来解决这个问题

// This is the library I control
public void SendObject() {
var anonymous = new {
Text = "Test",
SubItem = new {
SubText = "Bla",
SubSub = new {
SubSubText = "Baha"
}
}
};
}

dynamic dyn = ExposeAnonymous(anonymous); // Perform voodoo

var result = ExternalLibrary.GetSpecialProperty(dyn);

// External library I don't control
public object GetSpecialProperty(dynamic dyn) {
return dyn.SubItem.SubSub.SubSubText;
}

问题是当将 dynamic 发送到其他外部库时,我无法控制,您会收到如下错误:

'object' does not contain a definition for 'SubItem'.

最佳答案

The problem is when sending the dynamic to other libraries,

... 还有问题。 C# 编译器将匿名类型声明为 internal,这意味着其他程序集无法访问它们。

要么停止使用匿名类型,要么使用 [InternalsVisibleToAttribute]使类型对其他程序集可见。在包含创建匿名类型实例的类型的程序集中,使用:

[InternalsVisibleTo("ExternalLibrary")]

(我实际上希望问题出在 SubItem 而不是 SubSub...)

关于c# - 复杂匿名对象到动态公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173378/

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