c# - 如何在不使用的情况下调用扩展方法

标签 c#

using System;

class Runner
{
    static void Main()
    {
        A a = new A();
        // how to say a.PrintStuff() without a 'using'
        Console.Read();
    }
}

class A { }

namespace ExtensionMethod
{
    static class AExtensions
    {
        public static void PrintStuff(this A a)
        {
            Console.WriteLine("text");
        }
    }
}

如何在没有“使用”的情况下调用扩展方法?而不是 ExtensionMethod.AExtensions.PrintStuff(a),因为它不使用扩展方法。

最佳答案

可以像这样直接调用你的扩展,因为它只是一个静态方法,传递它将作为第一个 this 参数的实例:

A a = new A();
ExtensionMethod.AExtensions.PrintStuff(a);

如果您对更常用的扩展方法遵循此模式,这可能会使遇到此代码的其他开发人员感到困惑。它还会使链接扩展调用(如 LINQ)看起来更像一种函数式语言,因为您将嵌套每个调用而不是链接它们。

关于c# - 如何在不使用的情况下调用扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824600/

相关文章:

c# - 如何绘制数学符号?

c# - 填补emgu cv中的漏洞

c# - LINQ 中的条件 "orderby"排序顺序

c# - A* 寻路在 3D Minecraft 环境中不起作用

c# - 如何使用 C# 备份 Mysql 数据库中的表

c# - 具有 varbinary(max) OUTPUT 的 CLR 存储过程失败,但与 T-SQL 相同的过程

c# - C# : a specific problem/question 中的 IronPython 集成

c# - 与不可见网格的 Irrlich 碰撞

c# - 无法使用打开的 xml 在 word 中找到合并字段

c# - 如何通过 HTTP GET ASP.NET C# 获取链接中的参数