Нет, это невозможно.
Тот факт, что класс sealed
просто означает, что он не может быть унаследован.
Например, что-то вроде: public interface A<SealedItem> where SealedItem : sealed
Вы можете использовать общие ограничения только для вещей, которые управляют использованием типа - если это класс или структура, если он реализует интерфейс или является производным от определенного типа, или если у него есть открытый конструктор, который не принимает параметров.
или может быть что-то вроде: public sealed interface A {}
Интерфейс не может быть помечен как sealed
.
Единственное, что вы можете сделать, чтобы предотвратить наследование, это использовать типы значений - структуры не могут наследовать от чего-то другого, кроме специального класса ValueType
.(и это вне вашего контроля), и не может быть унаследован от -
от Structs (Руководство по программированию в C #) :
Структура не может наследоваться от другой структуры или классаи это не может быть основой класса.
однако это, вероятно, не будет хорошим выбором в большинстве случаев, особенно если вам нужна семантика ссылочного типа в вашем коде (и в большинстве случаев это так).
Обновление - с последующим обновлением вопроса:
Дополнительный контекст: у меня есть объекты запроса, которые предоставляются через API.Эти объекты запроса могут со временем меняться, однако я не хочу, чтобы эти объекты запроса влияли друг на друга.
Вы можете создавать все свои классы запросов как запечатанные - и оставлять комментарии в коде для будущих разработок, которые должны быть запечатаны, и объяснять, почему - но это, вероятно, все, что вы можете сделать, кроме использования структур вместоклассов (что может быть неплохой идеей, если это только для запросов API.)
Проверьте Выбор между классом и структурой , чтобы увидеть, соответствуют ли ваши запросы рекомендациям:
✓ СООБРАЖЕНИЕ определение структуры вместо класса, если экземпляры типа маленькие и обычно недолговечные или обычно встроены в другие объекты.
X AVOID определение структуры, если тип не имеет всех следующих характеристик:
- Логически представляет одно значение, подобное примитивным типам (int, double и т. Д.).
- Размер экземпляра менее 16 байт.
- Он неизменен.
- Его не нужно часто упаковывать.
Во всех остальных случаях.ases, вы должны определить свои типы как классы.