Структуры как общие аргументы - PullRequest
0 голосов
/ 16 августа 2011

У меня есть несколько классов, которые реализуют что-то вроде интерфейса / класса IAdd:

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

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

Теперь в некоторых случаях t в Add (T t) просто должен быть простой структурой с в основном входными переменными; что-то вроде:

int ID;
string Name;
int Age;

Оттуда я делаю некоторые сложные вещи в методе Add (), но как только у меня есть три три входа, мне больше ничего не нужно. Я, вероятно, могу просто использовать структуру, которая реализует ISomething. Есть шаблон дизайна или что-нибудь, что имеет к этому отношение? Должен ли я объявить структуру в AddClass? Как мне это назвать? Есть ли стандартный подход для чего-то подобного?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

t в этом случае будет рассматриваться как Объект параметров .

Что касается того, как вы получаете экземпляр ISomething, DefaultSomething (класс или структурахорошо, вы, вероятно, хотите класс, если у вас нет веских причин) это довольно нормально иметь.Если DefaultSomething предназначен для использования только в контексте AddClass, вы можете вложить его, иначе я бы объявил его самостоятельно.

0 голосов
/ 16 августа 2011

Нет ограничений по типу, которые могут определять структуру. Однако, если вы используете следующее ограничение, вы довольно сильно ограничены:

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

Я написал об этом в блоге: http://blog.gauffin.org/2011/07/generic-type-restriction-for-enums/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...