结构为通用参数

时间:2011-08-16 01:59:28

标签: c# inheritance

我有几个实现类似IAdd接口/类的类:

public class AddClass<T> where T : ISomething
{
   //Calculated Properties
   //Member Variables

   public Add(T t)
   {
       //do stuff thats complicated
   }
}

现在在某些情况下,Add(T t)中的t只需要是一个基本输入变量的简单结构;类似的东西:

int ID;
string Name;
int Age;

从那里我在Add()方法中做了一些复杂的事情,但是一旦我有3个三个输入,我就不需要任何其他东西了。我可能只是使用一个实现ISomething的结构。是否有设计模式或与此相关的任何内容?我是否在AddClass中声明了结构?我叫它什么名字?这样的事情有标准方法吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,

t将被视为Parameter Object

关于如何获得ISomething的实例,DefaultSomething(类或结构是好的,你可能想要一个类,除非你有充分的理由)是非常正常的。如果DefaultSomething仅用于AddClass的上下文中,则可以嵌套它,否则我会自行声明它。

答案 1 :(得分:0)

没有可以定义结构的类型限制。但是,如果您使用以下限制,则会限制很多:

 public class AddStruct<T> where T : struct, IConvertible, IFormattable, IComparable

我在博客上写过:http://blog.gauffin.org/2011/07/generic-type-restriction-for-enums/