【发布时间】:2010-10-29 09:24:09
【问题描述】:
假设我有一个接口IMyInterface<T>,它只描述了一个功能:
public interface IMyInterface<T>
{
T MyFunction(T item);
}
我可以将其替换为Func<T, T>,但出于语义原因我想要该界面。我是否可以在该接口和Func<T,T> 之间定义一个隐式转换,以便我可以将匿名委托或 lambda 作为参数传递给接受此接口作为参数的函数,就像我使用了Func<T,T> 一样?
为了演示,使用上面声明的接口,我想要一个这样的函数:
public T TestFunction<T>(IMyInterface myInterface, T value)
{
return myInterface.MyFunction(value);
}
我可以这样称呼:
TestFunction(x => x + " world", "hello");
结果将是“hello world”。
【问题讨论】:
-
你的意思是在第二个代码块中调用 IMyInterface.MyFunction() 吗?
标签: c# delegates lambda anonymous-methods implicit