私は主にデザイン決定に興味があります。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);
}
コードは、すべての(不要)をはるかに美しいからで、それにキャストし、図書館がこのように設計された理由私は疑問に思いました。