我主要對設計決定感興趣。爲什麼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);
}
的代碼是遠離美麗與所有的(不必要的),在它蒙上我不知道爲什麼該庫以這種方式設計。