处理任何类型的方法

AGu*_*ald 1 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
    {
        get
        {
            return new Handler().HandleReturnMethod(delegate()
            {
                int id = 1;
                return id; 
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够处理Handler类中的任何Type.但'T'似乎不起作用,int无法转换为它.如果有更好的方法或有什么问题,请评论.

Ree*_*sey 5

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

public T HandleReturnMethod<T>(Func<T> d)
{
    DoSomething(); //some other stuff
    return d();
}
Run Code Online (Sandbox Code Playgroud)

鉴于上述情况,您的代码应该有效:

protected int Id
{
    get
    {
        return new Handler().HandleReturnMethod(() =>
        {
            int id = 1;
            return id; 
        });
    }
}
Run Code Online (Sandbox Code Playgroud)