我正在尝试使用泛型类
编写类似的东西MyGenericClass<IMyType> myGenericClass = new MyGenericClass<IMyType>();
myGenericClass.SetMethod( s=> s.MethodOfMyType(), parameter1, parameter2)
具有
interface IMyType
{
int MethodOfMyType(string parameter1, string parameter2);
}
我对Lambda表达不太熟悉。这在C#中是否可行?
编辑:
我正在为MyGenericClass添加伪代码,以便更清楚地说明这一点:
class MyGenericClass<T>
{
public SetMethod(....Here I don't know what kind of parameters i should use)
{
}
}
答案 0 :(得分:0)
你可以记住这样的事吗?
myGenericClass.SetMethod( (s,p1,p2) => s.MethodOfMyType(parameter1, parameter2), p1, p2);
我的最终代码:
class MyGenericClass
{
public void SetMethod<T>(Func<T, string, string, int> method)
where T : IMyType
{
}
}
MyGenericClass myGenericClass = new MyGenericClass();
myGenericClass.SetMethod<IMyType>((t, s1, s2) => t.MethodOfMyType(s1, s2));
如果您想稍后传递参数,可以将它们添加到SetMethod。或者如果你想拥有&#34; AllInOne&#34;参数你可以使用partial function application。
var str1 = "MyString1";
var str2 = "MyString2";
Func<string, string, IMyType, int> sourceMethod = (s1, s2, t) => t.MethodOfMyType(s1, s2);
Func<IMyType, int> partialMethod = (t) => t.MethodOfMyType(str1, str2);