Where is "AsDynamic()"?

本文关键字:quot AsDynamic Where is | 更新日期: 2023-09-27 18:27:45

我见过一个名为AsDynamic()的方法的使用。IIRC是一种扩展方法。这个想法是,对于任何对象,你都可以调用myObject.AsDynamic()并获得它的动态版本

问题是,尽管我在谷歌上搜索了很多,但我还是找不到AsDynamic()方法。我假设它实际上已经实现了,我也想这样做。

我使用的是.NET 4客户端配置文件,我很困惑。:)

非常感谢。

Where is "AsDynamic()"?

事实证明我是对的——这是有人(Greg Young)专门实现的。实现的细节取自David Ebbo的博客:

使用C#4.0动态大大简化您的私有反射代码

您可以在动态var 中分配变量

Foo foo = GetFooFromSommehere();
dynamic dyn = foo;

或者铸造:

Foo foo = GetFooFromSommehere();
var dyn = (dynamic) foo;

为什么要有AsDynamic()方法
dynamic不同,ToList()方法实际上是填充而不是铸造。

为什么不简单地将某个东西分配给一个动态变量或将其强制转换为动态变量,因为它不是类型安全的,之后应该始终强制转换。

如果你想要一个扩展方法:

public static class DynamicExtension
{
    public static dynamic ToDynamic(this T value)
    {
        return (dynamic)value;
    }
}

您正在寻找的可能是在中实现的库方法反射魔术

http://www.nuget.org/packages/ReflectionMagic/

https://github.com/davidebbo/ReflectionMagic