Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法在作为参数传入委托时返回泛型类型_C#_Generics_Types_Func - Fatal编程技术网

C# 方法在作为参数传入委托时返回泛型类型

C# 方法在作为参数传入委托时返回泛型类型,c#,generics,types,func,C#,Generics,Types,Func,我正试图“泛化”我们在系统中散布的一些代码 我想: 返回泛型类型 传入包含要调用的方法的某种委托 我对泛型很陌生,所以非常感谢您的帮助 下面是我的手指在空中的位置(!) public static T ReturnSingleObject(Func dynamicSignature) { T返回值; 服务参考wCFService; 尝试 { wCFService=newBusinessServiceClient(); returnValue=dynamicSignature(); //retur

我正试图“泛化”我们在系统中散布的一些代码

我想:

  • 返回泛型类型
  • 传入包含要调用的方法的某种委托
  • 我对泛型很陌生,所以非常感谢您的帮助

    下面是我的手指在空中的位置(!)

    public static T ReturnSingleObject(Func dynamicSignature)
    {
    T返回值;
    服务参考wCFService;
    尝试
    {
    wCFService=newBusinessServiceClient();
    returnValue=dynamicSignature();
    //returnValue=wCFService.AMETHOD(PARAM1,PARAM2);
    返回值;
    }
    捕获(例外)
    {
    如果(wCFService!=null)wCFService.Abort();
    投掷;
    }
    最后
    {
    如果(wCFService!=null)wCFService.Close();
    }
    }
    
    看起来dynamicSignature函数缺少几个参数,因此需要添加这些参数。此外,还可以将return语句移到try块的底部,并将返回值初始化为默认值:

    T returnValue = default(T);
    ...
    try
    {
       ...
       returnValue = dynamicSignature(somestring, someint);
       ...
    }
    ...
    
    return returnValue;
    

    一些细节:不要尝试。。。最后,您最好在调用dynamicSignature时使用(var WCFService=new BusinessServiceClient()){your code},因为您缺少字符串和int参数。我希望动态传递调用WCFService的任何方法并返回结果。
    T returnValue = default(T);
    ...
    try
    {
       ...
       returnValue = dynamicSignature(somestring, someint);
       ...
    }
    ...
    
    return returnValue;