2016-05-13 4 views
3

Я читал C# спецификации о <permission> тег с этим синтаксисом:На <permission> теге

<permission cref="member">description</permission> 

Говорят, что:

Этот тег позволяет безопасного доступа к члену документировано, где cref="member" - это имя члена, а description - это описание доступа к члену.

Так что я мог бы утверждать, что нечто подобное может быть действительным:

/// <permission cref="foo">foo is not accessible</permission> 
private void foo() {} 

Однако в спецификации есть следующий пример:

/// <permission cref="System.Security.PermissionSet">Everyone can 
/// access this method.</permission> 
public static void Test() { } 

Если cref является членом, который должен быть задокументировано для доступности, что делает System.Security.PermissionSet?

Действительно я не понимаю пример спецификации !!!

ответ

2

I думаю,, который был предназначен для обеспечения безопасности доступа к коду для доступа к определенному методу \ class. Например:

/// <summary> 
/// Do stuff 
/// </summary> 
/// <permission cref="PermissionSet">Caller should have full trust</permission> 
[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")]   
public void DoStuff() { 

} 

Здесь мы требуем полный набор разрешений доверия, и мы заявляем это явно в документации нашего метода. Также подумайте:

/// <summary> 
/// Do stuff 2 
/// </summary> 
/// <permission cref="FileIOPermission">Caller should have unrestricted IO access</permission> 
[FileIOPermission(SecurityAction.Demand, Unrestricted = true)] 
public void DoStuff2() { 

} 

Здесь мы требуем конкретных FileIOPermission (не набора разрешений), и поэтому мы говорим, что в явном виде в документации.

Это, безусловно, не документирует доступность (публичный \ частный) участника - зачем вообще это делать? Доступность является частью определения функции \ класса и не требует документирования.