我有几个实现类似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中声明了结构?我叫它什么名字?这样的事情有标准方法吗?
答案 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/