【问题标题】:C# generic inputs and outputsC# 通用输入和输出
【发布时间】:2013-09-11 16:36:41
【问题描述】:

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
        }

【问题讨论】:

  • 你为什么不运行它看看会发生什么?
  • 这不是看它是否有效的问题。如果我运行它,它就会有效。

标签: .net c#-4.0 generics


【解决方案1】:

泛型确实适用于您可以对传入的所有类型应用相同的通用(即 generic) 策略的情况。如果您必须以不同的方式处理每种类型,那么这确实不是一个好的选择仿制药。在这种情况下,我建议简单地使用不同的重载:

public static bool Add(Test data)
{
    // Update member data
    //return true / false
}

public static bool Add(Test1 data)
{
    // Update someother data
    //return true / false
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多