C#通用输入和输出

时间:2013-09-11 16:36:42

标签: .net c#-4.0 generics

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
        }

2 个答案:

答案 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)