目前我有以下功能
public int GetVariableValue(TaxReturn taxReturnObj, string identityKey)
{
int returnTypeOut = 0;
if (taxReturnObj.Identity.ContainsKey(identityKey))
{
int.TryParse(taxReturnObj.Identity[identityKey], out returnTypeOut);
}
return returnTypeOut;
}
要检索我们使用以下代码的值,
e.g。
int valPayStatus = GetVariableValue(objTaxretrun, TaxReturnIdentity.aadata_identity_paystatus)
现在工作正常,因为所有 Identity 值都是Integer,但最近我们添加了带有String和Boolean类型的New Identites。 所以我想将上述功能设为 Generic ...但我不知道如何去做,我试图在google上搜索但找不到任何东西。
答案 0 :(得分: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)
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey)
{
if (taxReturnObj.Identity.ContainsKey(identityKey))
{
return (T)taxReturnObj.Identity[identityKey];
}
return default(T);
}
这样的东西? 如果你传递错误的类型,并不意味着它不会抛出异常。
答案 3 :(得分:1)
您可以尝试这样的事情:
public T GetVariableValue<T>(TaxReturn taxReturnObj, string identityKey)
{
if (taxReturnObj.Identity.ContainsKey(identityKey))
{
return taxReturnObj.Identity[identityKey];
}
return default(T);
}
如果您在字典key
中找到Identity
,则返回该特定值,而不进行解析,或者您可以返回default
值