1

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
        }
4

2 回答 2

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
}
于 2013-09-11T16:40:43.483 回答
1

在这种情况下不需要使用泛型。您可以简单地将参数声明为object.

而且(new Test()).GetType()是个坏主意。正确的方法是typeof(Test).

于 2013-09-11T16:41:01.357 回答