【问题标题】:Get the parameters of extended method in extension method在扩展方法中获取扩展方法的参数
【发布时间】:2016-02-13 06:30:35
【问题描述】:

假设我有方法:

public int Method(string param1, string param2)
{
     return 0;
}

我有扩展方法

public static int Extend(this int mhd, string param1, string param2)
{
     return mhd;
}

我会这样称呼它

int N = Method("param1","param2").Extend("param1","param2");

但是我不得不定义两次参数。我想知道有没有办法获得这样的扩展方法参数:

public static int Extend(this int mhd)
{
     var params = this.Parameters;
     return mhd;
}

【问题讨论】:

  • 直接回答是否定的,因为扩展方法不知道它的参数是如何获得的。例如,您可以调用5.Extend("param1","param2")。如果您在更高级别上解释您的目标,也许有人可以提供帮助。
  • public int Method(string first param, string second param2) - 这可以编译吗?
  • :) 我没有看到它们之间的空格。我将编辑我的问题。

标签: c# extension-methods static-methods


【解决方案1】:

但是我不得不定义两次参数。我想知道有没有办法获得这样的扩展方法参数:

没有。扩展方法的第一个参数始终是方法所针对的类型。 声明中需要此参数,因此如果要传入任何内容,您必须声明第二个参数。


为什么不把所有代码放在一个方法中?


你能反转方法依赖吗?换句话说,是这样的:

int N = 0.Extend(Method("param1","param2"));    

或者,像这样:

public int Method ( int mhd, string one, string two ) {
   // do stuff...

  return mhd.Extend ( one, two );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2015-03-12
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多