C#-尝试从函数构造类,获取无法转换方法组错误

问题描述

我试图将一个函数封装在一个类中,但是它不起作用。我在这里想念什么?

public class MyClass<Return,T>
{
        public delegate void D01(T val);
        public D01 d01;
        public delegate void D02(T val,T val2);
        public D02 d02;
 
        public MyClass(D01 func)
        {
            d01= func;
        }

        public MyClass(D02 func)
        {
            d02= func;
        }
    }

    public class ABC
    {
   
        public void MyGenericFunction<T>(MyClass<T,T> function,T var01)
        {
            ...
        }
    }

    class OtherClass
    {
        private ABC abc = new ABC();
        private void Test(float x) {...}
        private void OtherFunc()
        {
            float x = 1.0f;
            abc.MyGenericFunction<float>(Test,x);
            //Gives Cannot convert method group to MyClass<float,float> error
        }
    }

它应该能够将函数转换为相同类型的委托。我也具有带有Func和Action参数的相同构造函数,但也无法使它们正常工作。

解决方法

哇,这里堆着很多东西。.我想您实际上是想将Func并入MyClass<T,T> function

public void MyGenericFunction<T>(Func<T,T> function,T var01)
{
   ...
}

...

private float Test(float x)
{
   ...
}

private void OtherFunc()
{
   float x = 1.0f;
   abc.MyGenericFunction<float>(Test,x);
}

您真正想要的偶然机会

public void MyGenericFunction<T>(MyClass<T,T var01)

那么您可能想要更多类似的东西

abc.MyGenericFunction<float>(new MyClass<float,float>(Test),x);