是否可以镜像方法?

时间:2017-09-19 20:17:52

标签: c# reflection

例如,有一堆重载的方法:

public void MyLongFunctionName(string arg1,...) ...
public void MyLongFunctionName(int arg1,...) ...
//.... many different argument types

为了制作那个长函数的快捷方式,我使用了my()

public void my(string arg1,...) ...
public void my(int arg1,...) ...
....

但是,如果没有定义my()方法(如上所述)那么MyLongFunctionName()作为my()的快捷方式,可以这样做吗?

例如,在PHP中,您可以复制函数,例如:

$my = MyLongFunctionName(arg1, arg2....);
//execute
$my(arg1, arg2....)

P.S。注意所有downvoters和duplicate-markers:

这个主题不重复,因为那个引用的主题根本不回答这个问题。它执行普通函数,甚至说它根本不是别名: enter image description here

所以,那个话题并没有解决问题。相反,我想镜像(a.k.a.ALIAS)具有ie my()的特定方法的整个重载,它可以接受参数的变化。所以,请停止对你不读的东西的盲目贬低。

1 个答案:

答案 0 :(得分:2)

我担心你的要求是不可能的。

你想要的是一大堆方法的代表。它被称为method group

  

方法组是由成员查找(第7.4节)产生的一组重载方法。

例如something.ToString是一个方法组。它可能包含一个或多个方法,具体取决于ToString是否具有此特定类的重载。

这是一个编译时构造。您不能将方法组放入变量中,就像使用单个函数一样。您可以从方法组创建委托,但这涉及获取特定的重载并仅将其转换为委托。