gpt4 book ai didi

c# - 跨程序集边界返回/使用动态匿名类型

转载 作者:IT王子 更新时间:2023-10-29 04:21:20 25 4
gpt4 key购买 nike

下面的代码效果很好。如果GetUse方法在不同的程序集中,代码失败并出现 RuntimeBinderException。这是因为 .Net 运行时系统仅保证程序集中匿名类型(在本例中为 <string, int>)的通用性。

有什么方法可以欺骗运行时系统来克服这个问题吗?我可以在 Use 上的调试器中检查对象端,调试器可以看到相关的属性。

class Program
{
static void Main(string[] args)
{
UsePerson();
Console.ReadLine();
}

public static void UsePerson()
{
var person = GetPerson();

Console.WriteLine(person.Name);
}

public static dynamic GetPerson()
{
return new { Name = "Foo", Age = 30 };
}
}

最佳答案

使用 ExpandoObject而不是匿名类型。这应该允许您安全地跨越程序集边界:

public static dynamic GetPerson()
{
dynamic person = new ExpandoObject();
person.Name = "Foo";
person.Age = 30;

return person;
}

一般来说,匿名类型应该只在生成它们的同一方法中使用。从方法返回匿名类型通常会导致比它解决的问题更多的问题。

关于c# - 跨程序集边界返回/使用动态匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993200/

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