저는 주로 디자인 결정에 관심이 있습니다.FileSystemInfo가 GetAccessControl 메서드를 선언하지 않는 이유는 무엇입니까?
배경 정보 :
FileSystemInfo는 FileInfo 및 DirectoryInfo (만까지)에 대한 기본 클래스입니다.
두 클래스 모두 GetAccessControl()
을 구현하고 FileSecurity 또는 DirectorySecurity 개체를 각각 반환합니다.
FileSecurity
및 DirectorySecurity
은 모두 FileSystemSecurity에서 파생되며 다시 이렇게하는 유일한 클래스입니다.
FileSecurity
도 DirectorySecurity
도 생성자를 제외하고는 자신의 메서드 나 속성을 선언하지 않은 것 같습니다.
여전히 FileSystemInfo
에는 public FileSystemSecurity GetAccessControl()
메소드가 없습니다.
질문 :
아무도 FileSystemInfo
이 방법을 포함하지 않는 이유 위에 되거 수 있습니까?
예제 코드
public static void GrantFullControlToBuiltinUsers(this FileSystemInfo fileSystemInfo)
{
FileSystemSecurity acFile;
if(fileSystemInfo is DirectoryInfo)
acFile = ((DirectoryInfo) fileSystemInfo).GetAccessControl();
else
acFile = ((FileInfo)fileSystemInfo).GetAccessControl();
acFile.AddAccessRule(
new FileSystemAccessRule(GetAccountNameBuiltinUsers(),
FileSystemRights.FullControl,
AccessControlType.Allow));
if (fileSystemInfo is DirectoryInfo)
((DirectoryInfo)fileSystemInfo).SetAccessControl((DirectorySecurity)acFile);
else
((FileInfo)fileSystemInfo).SetAccessControl((FileSecurity)acFile);
}
코드는 모든 (불필요한)와 함께 멀리 아름다운으로부터 그 안에 캐스트와 라이브러리가 이런 식으로 디자인 된 이유가 궁금.