【发布时间】:2012-05-31 02:43:42
【问题描述】:
我想知道是否有可能使变量的“动态”类型适用于匿名委托。
我尝试了以下方法:
dynamic v = delegate() {
};
然后我收到以下错误消息:
Cannot convert anonymous method to type 'dynamic' because it is not a delegate type
不幸的是,以下代码也不起作用:
Delegate v = delegate() {
};
object v2 = delegate() {
};
如果我想创建一个接受任何类型的委托的方法,即使是内联声明的,我该怎么办?
例如:
class X{
public void Y(dynamic d){
}
static void Main(){
Y(delegate(){});
Y(delegate(string x){});
}
}
【问题讨论】:
-
有什么理由不使用
Func<>或Action<>? -
@Jamiec 我想是因为这不符合不关心代表签名的标准。也就是说,它可以归结为使用
object[]参数调用 Invoke,然后可以用Func<>表示。 -
你没有在那里声明任何委托类型。
-
@AdamHouldsworth - 是的,重新阅读了这个问题,我现在明白了,但这没有多大意义。您必须对委托做某事,这意味着您的程序必须了解委托的 I/O。
-
@Jamiec 因为 Func 和 Action 具有 FIX 计数/参数类型。每次都必须指定。我不想这样做。
标签: c# dynamic delegates anonymous-delegates