传递通用模板作为参数

时间:2014-03-18 04:22:58

标签: c# templates generics reusability

尝试在下面实现重用。

if(update)
   var updateType = (A)request;
   updateType.Entity.NameFlag = nameValue;
   updateType.Entity.PhoneFlag = phoneValue
else
   var addType = (B) request;
   addType.Entity.NameFlag = nameValue;
   addType.Entity.PhoneFlag = phoneValue

正如您所看到的,唯一的区别是对象(A或B)。

如何使用T模板实现重用?

2 个答案:

答案 0 :(得分:1)

public void SomeMethod<A,B>()  where A : BaseTypeA where B : BaseTypeB
{
  if(update)
  {
      var updateType = (A)request;
      updateType.Entity.NameFlag = nameValue;
      updateType.Entity.PhoneFlag = phoneValue;
  }
  else
  {
      var addType = (B) request;
      addType.Entity.NameFlag = nameValue;
      addType.Entity.PhoneFlag = phoneValue;
  }
}

试试上面的

答案 1 :(得分:1)

public void DoStuff<T>(T item)
   where T : BaseClasseOrInterfaceOfAandB
{       
   item.Entity.NameFlag = nameValue;
   item.Entity.PhoneFlag = phoneValue
}

if(update)
{
    DoStuff((A)request);
}
else
{
    DoStuff((B)request);
}