Что за использование атрибутов C # с суффиксом «Атрибут»? - PullRequest
4 голосов
/ 15 июля 2011

Я смотрю на некоторый код C #, который применяет несколько атрибутов LINQ to SQL с суффиксом Attribute, например, ColumnAttribute, вместо простого Column, который я привык использовать.Есть ли какая-либо причина, кроме многословия, чтобы сделать это?

Ответы [ 7 ]

6 голосов
/ 15 июля 2011

Семантической разницы нет. Вероятно, тот, кто написал код, просто предпочел эту запись.

Также возможно, что код был автоматически сгенерирован с помощью инструмента. Инструменты генерации кода обычно не убирают бит атрибута из имени типа атрибута.

3 голосов
/ 15 июля 2011

Большинство атрибутов заканчиваются словом Attribute, включая ColumnAttribute, CLSCompliantAttribute и SerializableAttribute. Компилятор позволяет опустить последнее слово Attribute. Программист выбирает, добавлять атрибут к таким именам или нет.

Суффикс атрибута, однако, является всего лишь соглашением: вполне допустимо, хотя и необычно, определить атрибут, например, следующим образом:

    [AttributeUsage(AttributeTargets.All)]
    public class Foo : Attribute {

    }

точно так же, как и для определения исключения с именем Throwable, например.

3 голосов
/ 15 июля 2011

Атрибут называется ColumnAttribute.Компилятор просто предоставляет синтаксический сахар, позволяющий указывать их без суффикса атрибута.

Практической разницы нет.

2 голосов
/ 15 июля 2011

Нет, это просто стилевое решение. Однако, если вы смотрите на код, сгенерированный с использованием CodeDOM, ожидается наличие суффикса, поскольку генератор кода C # будет сохранять полное имя типа ___Attribute при добавлении атрибута.

1 голос
/ 15 июля 2011

Column - это просто псевдоним ColumnAttribute, синтаксически идентичный по функциональности и разрешенный компилятором в любой форме. Некоторые люди предпочитают использовать полное имя из-за привычки следовать Framework Naming Guidelines , которая поощряет добавление Attribute к пользовательским классам атрибутов или I для интерфейса типы.

1 голос
/ 15 июля 2011

Они синтаксически одинаковы.AFAIK, нет никаких причин делать это, если этот человек не был знаком с тем фактом, что синтаксический сахар в C # автоматически добавляет суффикс «Атрибут» при добавлении атрибута в квадратных скобках.

0 голосов
/ 17 мая 2014

Если вы посмотрите на стандарт кодирования Philips Healthcare - C #, правило 3 @ 122, вы увидите, что они действительно хотят, чтобы кодеры добавляли суффикс «Атрибут» к атрибутам. http://www.tiobe.com/content/paperinfo/gemrcsharpcs.pdf

Код может быть сгенерирован, но автор (ы) генератора кода, вероятно, пытается создать код, который соответствует как можно большему количеству стандартов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...