问题描述
我试图将一个函数封装在一个类中,但是它不起作用。我在这里想念什么?
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);