C# 处理方法中的任何类型

C# 处理方法中的任何类型,c#,delegates,types,C#,Delegates,Types,我有两节课 public class Handler { delegate T ReturnDelegate(); public T HandleReturnMethod(ReturnDelegate d) { DoSomething(); //some other stuff return d(); } } public partial class Test { protected int Id {

我有两节课

public class Handler
{

delegate T ReturnDelegate();

    public T HandleReturnMethod(ReturnDelegate d)
    {
        DoSomething(); //some other stuff

        return d();
    }
} 


public partial class Test
{

    protected int Id
    {
        get
        {
            return new Handler().HandleReturnMethod(delegate()
            {
                int id = 1;
                return id; 
            });
        }
    }
}
我希望能够处理处理程序类中的任何类型。但“T”似乎不起作用,int无法转换为它。
如果有更好的方法或此处有错误,请发表评论。

您需要创建委托类型和方法以使用泛型。就我个人而言,我会为此使用标准代表:

public T HandleReturnMethod<T>(Func<T> d)
{
    DoSomething(); //some other stuff
    return d();
}

您需要创建委托类型和方法以使用泛型。就我个人而言,我会为此使用标准代表:

public T HandleReturnMethod<T>(Func<T> d)
{
    DoSomething(); //some other stuff
    return d();
}

代码无法工作的原因是,intInt32)是一个结构而不是对象,这是它通常不能为null的原因 除非您将其声明为int?num=null

如果我没有弄错的话,只有对象可以有类型(对象和类型都是类),而不是结构。所有类都基于对象类(这就是非泛型(即t类型)元素的集合是对象的原因)


代码无法工作的原因是intInt32)是一个结构而不是对象,这是它通常不能为null的原因 除非您将其声明为int?num=null;

如果我没有弄错的话,只有对象可以有类型(对象和类型都是类)而不是结构。所有类都基于对象类(这就是不是泛型(即t类型)元素的集合是对象的原因)


命令模式?不确定,但请查看:命令模式?不确定,但请查看: