Я могу проиллюстрировать эту проблему лучше всего на примере.Force Interface/Class для определения строковой переменной в производном классе?
У меня есть интерфейс, который заставляет разработчиков реализовать определенную функцию. Я также хотел бы, чтобы этот интерфейс заставил пользователей реализовать свойство set или get, которое устанавливает имя производного класса в строке, хранящейся в классе. Так что, если разработчик создает новый класс, производный от этого интерфейса они вынуждены:
- Создать определение для метода.
- магазин имя производного класса в строке под названием «derivedType»
Я хотел бы сохранить имя в виде строки в производном типе, потому что я хотел бы сделать проверку некоторого типа во время выполнения на объектах, реализующих этот интерфейс.
public interface someInterface
{
int someMethod(int x);
string derivedType {get; set;}
}
public derivedClass : someInterface
{
public int someMethod (int x) {...};
public string derivedType
{
get {return this.derivedType;}
set {derivedType = "derivedClass";}
}
}
Зачем вам создавать свойство с помощью setter, но затем игнорировать значение, которое оно пыталось установить? И почему вы устанавливаете значение 'outputType', а не' outputClass'? –
О, и обратите внимание, что объявление свойства * означает не то же самое, что объявление переменной *. –
@JonSkeet Он также опустил ключевое слово 'class' из' производного класса '. –