2009-10-08 6 views
7

Reflector를 통해 실행되는 동안 WPF 응용 프로그램에서 버그의 근본 원인을 찾는 동안 많은 다른 클래스, 멤버 등을 가로 질러 흩어져있는 FriendAccessAllowedAttribute 내부 특성을 발견했습니다. 정확히이 속성을 사용하는 것을 찾을 수 없습니다 (있는 경우). 내 생각 엔이 부분은 C++/CLI 인프라의 일부이지만 MSDN, C++/CLI 사양 및 CLI 사양을 검색하면 아무 것도 알 수 없습니다. 아무도 그것이 사용 된 것을 알고 있습니까?WPF에서 내부 FriendAccessAllowedAttribute 사용

+0

또한이 속성을 사용하여'System.Threading.Tasks.Task'에 몇 가지 필드/메소드가 있습니다. –

답변

6

기억하기는 프레임 워크의 친구 어셈블리 간의 종속성을 제어하는 ​​방법이었습니다. 기본적으로 어셈블리 B에 어셈블리 A "친구"권한을 부여하면 모두 A의 내부 멤버를 A에서 사용할 수 없게됩니다. 그러면 해당 멤버에 대한 변경이 잠재적으로 손상 될 수 있기 때문입니다 (또한 검토해야 할 보안 영역을 증가시킬 수 있습니다). 이 속성이 Silverlight에서 존경받으며, 전체 프레임 워크에 대해 확신 할 수 없습니다.

+0

그래, 나는 반사경을 파고 들었다. 그러나 Silverlight를 체크 아웃하지는 않았다. – user7116

1

흥미롭게도 그 속성은 그 자체로 기인합니다! C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll에서 디 컴파일

, 버전 4.0 :

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | 
       AttributeTargets.Constructor | AttributeTargets.Method | 
       AttributeTargets.Property | AttributeTargets.Field | 
       AttributeTargets.Event | AttributeTargets.Interface, 
       AllowMultiple = false, Inherited = false)] 
[FriendAccessAllowed] 
internal sealed class FriendAccessAllowedAttribute : Attribute 
{ 
} 

그래서 내가 만 mscorlib의 친구를 할당 선택한 어셈블리에서 사용할 수있는 가정.


편집Microsoft's reference source for the attribute는 정의가 함께 InternalsVisibleToAttribute 보여줍니다 및 주석 문자열이 포함

AllInternalsVisible 친구 어셈블리에 대한 사실이 아닌 경우가의 FriendAccessAllowed 속성이 그 친구와 공유되는 내부 표시를 어셈블리.

관련 문제