使用通用返回类型创建函数

Amo*_*kar 4 c# asp.net generics types

目前我有以下功能

  public int GetVariableValue(TaxReturn taxReturnObj, string identityKey)
    {
        int returnTypeOut = 0;
        if (taxReturnObj.Identity.ContainsKey(identityKey))
        {
            int.TryParse(taxReturnObj.Identity[identityKey], out returnTypeOut);
        }
        return returnTypeOut;
    }
Run Code Online (Sandbox Code Playgroud)

要检索我们使用以下代码的值,

例如

int valPayStatus = GetVariableValue(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)
Run Code Online (Sandbox Code Playgroud)

它现在工作得很好,因为所有的身份值都是整数,但最近我们添加了带有字符串和布尔类型的新身份.所以我想将上述功能作为通用 ...但我不知道如何去做,我试图在谷歌上搜索但找不到任何东西.

saj*_*saj 5

我会这样做,也许有更好的方法;

public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey)
        {
            if (taxReturnObj.Identity.ContainsKey(identityKey))
            {
                if(typeof(T) == Int32)
                {     
                    int returnTypeOut = 0;
                    int.TryParse(taxReturnObj.Identity[identityKey], out returnTypeOut);
                    return returnTypeOut;
                }
                else if (typeof(T) == System.String)
                {
                //code here
                }
            }
            return default(T);
        }
Run Code Online (Sandbox Code Playgroud)

你可以这样称呼它

int valPayStatus = GetVariableValue<int>(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)


string valPayStatusStr = GetVariableValue<string>(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)
Run Code Online (Sandbox Code Playgroud)