如何将函数的名称及其参数作为参数传递

本文关键字:参数 参数传递 函数 | 更新日期: 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);