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)

すべてのID値が整数だったので、今まで問題なく機能していましたが、最近、文字列型とブール型の新しい ID を追加しました。そこで、上記の関数をジェネリックにしたいのですが、どうすればいいのかわからず、Googleで検索してみましたが、何も見つかりませんでした。

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 に答える