首页 > 后端开发 > C++ > 如何在 C# 中访问其声明范围之外的匿名类型对象?

如何在 C# 中访问其声明范围之外的匿名类型对象?

Barbara Streisand
发布: 2025-01-03 13:19:40
原创
234 人浏览过

How Can I Access Anonymous Type Objects Outside Their Declared Scope in C#?

访问超出声明范围的匿名类型对象

在 C# 中,匿名类型是根据从源中提取的属性名称和值动态生成的。但是,这些对象的范围仅限于声明它们的块。这就提出了一个问题:我们如何访问声明范围之外的匿名类型对象?

使用“按示例进行转换”(建议谨慎)

虽然通常不推荐,一种称为“通过示例进行转换”的技术允许访问超出其范围的匿名类型对象。此黑客涉及创建一个单独的“示例”对象,其属性与我们要访问的匿名类型相同。

实现:

  1. 创建“ example”对象,确保它具有与匿名类型相同的属性。
  2. 使用以下方法将匿名类型转换为“example”对象的类型CastByExample 方法。这将返回匿名类型作为所需类型。
public void FuncB()
{
    var example = new { Id = 0, Name = string.Empty };

    var obj = CastByExample(FuncA(), example);
    Console.WriteLine(obj.Name);
}

private object FuncA()
{
    var a = from e in DB.Entities
            where e.Id == 1
            select new { Id = e.Id, Name = e.Name };

    return a.FirstOrDefault();
}

private T CastByExample<T>(object target, T example)
{
    return (T)target;
}
登录后复制

注意事项:

  • 此技术不受 Microsoft 官方支持。
  • 这可能会导致意外的行为和潜在的错误。
  • 强烈建议不要使用生产代码中的这种方法。

总之,使用“通过示例进行转换”访问超出其范围的匿名类型对象是可能的,但这是一种危险的做法,应尽可能避免。

以上是如何在 C# 中访问其声明范围之外的匿名类型对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板