Лучшее название для INeedSomething ...? - PullRequest
2 голосов
/ 09 мая 2011

Я пытался выбрать имя для интерфейса, через который я могу передать что-то в объект, например:

  • Если объект INeedX, то будет вызван метод SetX (некоторый x);
  • Если объект INeedY, то будет вызван метод SetY (некоторый y);
  • и так далее. (чертовски смешно, я знаю :))

Я пытаюсь найти другое имя для такого рода интерфейсов, но не могу понять это.

Кто-нибудь знает, как назвать интерфейс INeedSomething ?

Ответы [ 4 ]

3 голосов
/ 09 мая 2011

А как насчет имени IDependsOn для вашего интерфейса (он же IDependsOnUserId, IDependsOnTimeOut)

2 голосов
/ 09 мая 2011

Что ж, интерфейс INeed, вероятно, свидетельствует о неуклюжем дизайне.Мне кажется, что вы действительно ищете инъекцию зависимостей, которая является эквивалентом того, что объекту нужен другой объект для работы.Поэтому вместо того, чтобы иметь

class Car:INeed<Engine> {
    public Set(Engine engine)
}

, возможно, вы действительно хотите

class Car {
    public Car(Engine engine)
}

На вашем месте я бы попытался выяснить, применимо ли вышеприведенное в вашем случае, а этоболее стандартный способ объявления потребностей / зависимостей

1 голос
/ 09 мая 2011
public interface INeed<T>
{
   public T SetValue { set; }
}

с помощью шаблонов тип, передаваемый вашим интерфейсом, будет определен позже, например:

class Needy : INeed<int>
{
   private int internalValue;
   public int SetValue { set {
     internalValue = value;
   } };
}
0 голосов
/ 21 июня 2011

IRequire звучит лучше, однако использование интерфейса для этого кажется неправильным.

Вместо этого используйте атрибуты:

class MyClass
{
    [Required]
    double X
    {
         get;
         set;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...