Шаблон состояния типа в C#C#

Место общения программистов C#
Anonymous
Шаблон состояния типа в C#

Сообщение Anonymous »

Я хочу реализовать шаблон состояния типа в C#. Я пробовал что-то вроде:
interface Open {}
interface Closed {}

abstract class Foo { }

class Bar where T: Closed { }
class Bar where T: Open { }

а также другие варианты, но все они заканчиваются жалобами компилятора. Этот конкретный пример дает (через https://www.programiz.com/csharp-progra ... -compiler/):
/tmp/qmk1tTLHWG.cs(12,11): error CS0101: The namespace 'baz' already contains a definition for 'Bar'
/tmp/qmk1tTLHWG.cs(11,11): error CS0265: Partial declarations of 'Bar' have inconsistent constraints for type parameter 'T'


Я недостаточно знаю о системе типов C#, чтобы знать, что на самом деле будет работать, и не могу найти подробной документации о том, как это сделать. Можно ли реализовать шаблон состояния типа? Я нашел блог Адама, однако на самом деле он не реализует шаблон состояния типа, как показано в 1, и это то, что я хотел бы сделать, если это возможно.
В идеале мне бы хотелось что-то вроде
struct Closed { };
struct Open { };

class Foo {
// functions applicable to Foo's in both the Closed and Open states
}

class Foo {
// functions applicable to Foo's in just the Open state
}

class Foo {
// functions applicable to Foo's in just the Open state
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... in-c-sharp

Вернуться в «C#»