Чего я хочу достичь:
Контейнер, содержащий группы полей типов значений.
Контейнер имеет следующие характеристики
- Действует как POD .
- Изменяемый
- Может быть скопирован по значению.
- Поля контейнера в будущем будут расти.
Для разрешения быть скопировано, моя попытка использует MemberwiseClone()
, который будет неглубоко скопировать контейнер.
Таким образом, класс, содержащий только поля типа значения, может работать, но MemberwiseClone()
может быть сломан, если класс содержит ссылочный тип, а MemberwiseClone()
скопируйте ссылку.
Мое намерение состоит в том, чтобы не дать неопытным разработчикам случайно взломать систему.
Ожидаемый ответ:
Какой-то атрибут узел [AllowOnlyValueTypeFields] в классе, чтобы компилятор мог его проверить.
[AllowOnlyValueTypeFields]
class foo {
int[] bar; // beep! compiled failed.
}
- Может быть ... шаблон проектирования может решить эту проблему?
Текущее решение:
- Единицы измерения t с помощью отражения и проверьте каждое поле контейнера.
- «Правило» о том, что ссылочный тип не используется в этом контейнере и вскоре о нем забудут.
Ключевые слова:
- C# свойство поля только тип значения
- C# свойство поля допускает только тип значения
- C# принудительное переполнение поля только типа значения
Ни один из вышеперечисленных результатов не дал значимых результатов.
Любые предложения приветствуются.