gerics新手: 我正在尝试编写一个Add方法来更新传递给它的不同数据协定的数据库。需要知道是否可以这样做:
enter code here
public static bool Add<T>(T data)
{
if (data.GetType().Name.Equals("Test"))
{
var memberData = (Test)Convert.ChangeType(data, (new Test()).GetType());
// Update member data
}
if (data.GetType().Name.Equals("Test1"))
{
var someotherdata = (Test1)Convert.ChangeType(data, (new Test()).GetType());
// Update someother data
}
//return true / false
}
答案 0 :(得分:4)
泛型实际上适用于您可以将相同的通用(即通用)策略应用于传入的所有类型的情况。如果您必须以不同方式处理每种类型,这实际上不是一个好的候选者仿制药。在这种情况下,我建议只是有不同的重载:
public static bool Add(Test data)
{
// Update member data
//return true / false
}
public static bool Add(Test1 data)
{
// Update someother data
//return true / false
}
答案 1 :(得分:1)
在这种情况下无需使用泛型。您只需将参数声明为object
。
(new Test()).GetType()
是一个坏主意。正确的方法是typeof(Test)
。