ama*_*int 6 .net c# dynamic-language-runtime
我知道匿名函数不支持作为动态方法调用的参数..NET 4.0中DLR的其他此类限制是什么?
Jon*_*eet 11
你可以使用匿名函数,你只需要先抛出它们:
dynamic list = new List<string>() { "10", "20" };
dynamic converted = list.ConvertAll((Func<string, int>) (x => int.Parse(x)));
Run Code Online (Sandbox Code Playgroud)
方法组转换也是如此:
foo.Click += (EventHandler) MyClickHandler;
Run Code Online (Sandbox Code Playgroud)
到目前为止我遇到的其他限制:
dynamic在类型约束中使用您不能dynamic在类声明的接口中用作类型参数,但您可以将其用作基类的类型参数,即
class Invalid : IEnumerable<dynamic>
class Valid : List<dynamic>
Run Code Online (Sandbox Code Playgroud)扩展方法在执行时是不可发现的(但您可以使用动态参数直接调用静态方法)
dynamic[]为IEnumerable<dynamic>- 将在发布时修复.dynamic用作基类(请注意,这些是C#4.0的限制和DLR本身一样多.我的印象就是你的意思.)