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/