Меня интересует в основном дизайнерское решение.Почему 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);
}
код далеко от красивой со всеми (ненужными) бросает в него, и я задавался вопросом, почему библиотека была разработана таким образом.