如何将函数的名称及其参数作为参数传递
本文关键字:参数 参数传递 函数 | 更新日期: 2023-09-27 18:25:59
我正在尝试使用泛型类编写类似的东西
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)
{
}
}
你能记住这样的事情吗?
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中。或者,如果您想拥有"AllInOne"参数,您可以使用分部函数应用程序。
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);