Что делает ReliableContractAttribute? - PullRequest
10 голосов
/ 14 апреля 2009

Это вообще что-то делает или только для документации. Если это только для документации, почему документация не документирует это?

Например, эти два статических метода System.Array:

[ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
public static void Copy(Array sourceArray, Array destinationArray, int length)

[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length)

В их сгенерированной документации MSDN даже не упоминается, что Copy или ConstrainedCopy аннотированы.

Ответы [ 2 ]

10 голосов
/ 14 апреля 2009

Я полагаю, что они также используются для ограниченных областей выполнения, поэтому CLR знает, что он может делать безопасно. Существуют определенные вещи, которые ваш код не может сделать в CER, и, в свою очередь, CLR гарантирует, что определенные исключения вне диапазона не генерируются.

MSDN содержит более подробную информацию.

3 голосов
/ 14 апреля 2009

С MSDN :

Атрибут ReliabilityContractAttribute атрибут обеспечивает механизм для вас документировать свой код и указать какой тип надежности гарантирует вы можете сделать перед лицом исключительные условия, которые могли потенциально может привести к противоречивым государство. В этом контексте исключительно условия определены как асинхронные исключения, которые могут быть сгенерированы в бегать по общему языку время выполнения, такие как прерванные потоки, ситуации нехватки памяти и стека переполняется. Вы можете применить Атрибут ReliabilityContractAttribute сборкам, типам и методам.

Используйте этот атрибут с Перечисление согласованности для определения Надежность контракта путем документирования уровень надежности в конкретный кусок кода.

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