2012-02-19 8 views
1

私は主にデザイン決定に興味があります。FileSystemInfoがGetAccessControlメソッドを宣言しないのはなぜですか?

背景情報:
FileSystemInfoFileInfoDirectoryInfo(のみ)での基本クラスです。
どちらのクラスも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); 
} 

コードは、すべての(不要)をはるかに美しいからで、それにキャストし、図書館がこのように設計された理由私は疑問に思いました。

答えて

2

私は、2つのGetAccessControlメソッドがそれぞれ適切な具体的な型(FileSecurityとDirectorySecurity)を返すようにしたいと考えています。共通のGetAccessControl()メソッドから継承した場合、FileSystemSecurityを強制的に返すため、ユーザーは手動でキャストする必要があります。

主に審美的な選択です。

関連する問題