Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以镜像一个方法?_C#_Reflection - Fatal编程技术网

C# 是否可以镜像一个方法?

C# 是否可以镜像一个方法?,c#,reflection,C#,Reflection,例如,有一堆方法重载: public void MyLongFunctionName(string arg1,...) ... public void MyLongFunctionName(int arg1,...) ... //.... many different argument types 为了实现该长函数的快捷方式,我使用了,即我的: 然而,像这样的东西是否可以使my成为MyLongFunctionName的快捷方式,而不必像上面那样定义我的一堆方法 例如,在PHP中,可以复制函数,

例如,有一堆方法重载:

public void MyLongFunctionName(string arg1,...) ...
public void MyLongFunctionName(int arg1,...) ...
//.... many different argument types
为了实现该长函数的快捷方式,我使用了,即我的:

然而,像这样的东西是否可以使my成为MyLongFunctionName的快捷方式,而不必像上面那样定义我的一堆方法

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

$my = MyLongFunctionName(arg1, arg2....);
//execute
$my(arg1, arg2....)
所有投票人和重复标记人注意: 这个主题不是重复的,因为引用的主题根本没有回答问题。它执行普通函数,甚至说它根本不是别名:


所以,这个话题并不能解决问题。相反,我想做一个镜像。将特定方法的整个重载别名为my,可以接受参数的变化。所以,请不要对你没有读到的东西漫不经心地贬低。

恐怕你所要求的是不可能的

您需要的是一种用于一系列方法的委托。它被称为方法组

方法组是由成员查找§7.4产生的一组重载方法

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


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

我认为这个问题的答案与你将要得到的答案一样接近:除了Ctrl+R,VS中的Ctrl+R为什么我的主题被标记为重复,而引用的主题根本没有回答这个问题。它执行普通函数,我想用my来镜像方法的整个重载,my可以接受参数的变化。所以,所有的选民和主持人都犯了一个错误。答案是否定的。你不能那样做。这是不可能的。@EdPlunkett谢谢你,是的,我想要一个答案,这就是为什么它关闭了,我不明白。很多人认为最接近的近似值是一个答案。而且,许多人无疑会考虑愚蠢的问题——这是一种像运算符重载那样的代码混淆形式,任何使用它的人都会滥用它,现代文本编辑器和监视器提供的是不动产,因为这是C智能信息记住你的名字。我可能就这些,但我怀疑其他人也这么看。FTR我没有dv。谢谢你理解我想要什么!类似于这个可能的PHuSUDO代码:OrrIIILIALIAL方法中的FraceOrthAlxMy方法{SETMYYNEXY方法为OrthalAlx方法;} .T.Ttoua进一步指向NVoigt的注释,考虑引用某个任意类的一些基本上任意的方法组的引用,它们都只在运行时才知道。现在,您正在运行时执行重载解析,这非常昂贵。我们为什么要在语言中引入这个隐藏的陷阱呢?少数程序员希望在不使用Intellisense的情况下保存一些击键?还是怎样你永远不会向编译器团队兜售这个想法。@T.Todua使用反射,你可以做任何你想做的事。将您选择的所有方法(可能名称为X)放入一个数组中,然后对它们进行处理。但是这需要很多代码,而且比使用原来的长名称要糟糕得多。谢谢,我想你可能是对的@EdPlunkett你可以把所有的评论作为一个答案,我认为,这是值得的。
$my = MyLongFunctionName(arg1, arg2....);
//execute
$my(arg1, arg2....)