作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个通用集合(字典),它存储一个枚举和委托(delegate)。因此,如果用户向方法提供枚举值作为参数,则集合中的相应委托(delegate)将被执行。
委托(delegate)指向的这个方法被重载了。调用方法时,如何选择执行哪个版本的方法?
谢谢
最佳答案
委托(delegate)只指向一个单独的重载——而不是“方法组”。当你得到一个方法的委托(delegate)时,你已经完成了重载决议。通常,您可以在编译器中执行此操作:
using System;
class Foo {
int Bar() { return 1; }
void Bar(int a) { }
static void Main() {
Foo foo = new Foo();
Func<int> myDelegate = foo.Bar; // points to "int Bar()" version
}
}
如果问题涉及通过反射获取重载方法 - 那么您可以在 Type.GetMethod()
的参数中指定模式(作为 Type[]
).这应该会为您提供所需的方法。
要从 MethodInfo
获取委托(delegate),请使用 Delegate.CreateDelegate
。
关于c# - 枚举,委托(delegate)字典集合,其中委托(delegate)指向重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713286/
我是一名优秀的程序员,十分优秀!