在C#中创建动态扩展方法?

在C#中创建动态扩展方法?,第1张

概述是否可以解决此错误: public static class LayoutExtensions{ /// <summary> /// Verifies if an object is DynamicNull or just has a null value. /// </summary> public static bool IsDynamicNull(this 是否可以解决此错误:
public static class LayoutExtensions{    /// <summary>    /// VerifIEs if an object is DynamicNull or just has a null value.    /// </summary>    public static bool IsDynamicNull(this dynamic obj)    {        return (obj == null || obj is DynamicNull);    }

编译时间

Error: The first parameter of an extension method        cannot be of type 'dynamic'
解决方法 不,请参见 https://stackoverflow.com/a/5311527/613130

使用动态对象时,无法通过“扩展方法语法”调用扩展方法.说清楚:

int[] arr = new int[5];int first1 = arr.First(); // extension method Syntax,OKint first2 = Enumerable.First(arr); // plain Syntax,OK

这两个都可以,但有动态

dynamic arr = new int[5];int first1 = arr.First(); // BOOM!int first2 = Enumerable.First(arr); // plain Syntax,OK

如果您知道动态对象的工作原理,这是合乎逻辑的动态变量/ fIEld / …只是一个对象变量/ fIEld / …(加上一个属性),C#编译器知道它应该被视为动态的. “视为动态”意味着什么?这意味着生成的代码,而不是直接使用变量,使用反射来搜索对象类型内所需的方法/属性/ …(在本例中,在int []类型内).很明显,反射不能绕过所有加载的程序集以查找可能在任何地方的扩展方法.

总结

以上是内存溢出为你收集整理的在C#中创建动态扩展方法?全部内容,希望文章能够帮你解决在C#中创建动态扩展方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1252132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存