4

目前我有以下功能

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

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

例如

int valPayStatus = GetVariableValue(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)

到目前为止,它工作正常,因为所有标识值都是整数,但最近我们添加了具有字符串和布尔类型的新标识。所以我想将上述功能设为通用......但我不知道该怎么做,我试图在谷歌上搜索但找不到任何东西。

4

4 回答 4

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);
        }

你可以这样称呼它

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


string valPayStatusStr = GetVariableValue<string>(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)
于 2012-08-23T11:40:41.397 回答
3
    public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey) 
    { 
        if (taxReturnObj.Identity.ContainsKey(identityKey)) 
        { 
            return (T) Convert.ChangeType(taxReturnObj.Identity[identityKey], typeof(T));
        }
        else
        {
           return default(T);
        }
    } 
于 2012-08-23T11:49:02.153 回答
1
public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey)
{
    if (taxReturnObj.Identity.ContainsKey(identityKey))
    {
        return (T)taxReturnObj.Identity[identityKey];
    }
    return default(T);
}

像这样的东西?并不意味着如果您将错误的类型传递给它,它就不会抛出异常。

于 2012-08-23T11:44:19.590 回答
1

你可以尝试这样的事情:

public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey)
{
    if (taxReturnObj.Identity.ContainsKey(identityKey))
    {
        return taxReturnObj.Identity[identityKey];   
    }
    return default(T);
}

如果您key在字典中找到 ,Identity则返回该特定值,而不对其进行解析,或者您可以返回该default

于 2012-08-23T11:46:53.283 回答