首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么FileSystemInfo不声明GetAccessControl方法?

为什么FileSystemInfo不声明GetAccessControl方法?
EN

Stack Overflow用户
提问于 2012-02-19 08:54:26
回答 1查看 511关注 0票数 1

我主要感兴趣的是设计决策背后的

背景信息:

FileSystemInfoFileInfoDirectoryInfo的基类(仅用于)。

这两个类都实现了GetAccessControl(),分别返回一个FileSecurityDirectorySecurity对象。

FileSecurityDirectorySecurity都是从FileSystemSecurity派生出来的,而且也是唯一这样做的类。

除了构造函数之外,FileSecurityDirectorySecurity似乎都没有声明自己的任何方法或属性。

然而,FileSystemInfo仍然不包含public FileSystemSecurity GetAccessControl()方法。

问题

有人能解释一下为什么FileSystemInfo不包含这个方法吗?

示例代码

代码语言:javascript
复制
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);
}

代码中的所有(不必要的)强制转换都不是很漂亮,我想知道为什么库是这样设计的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-19 09:23:48

我的猜测是,他们希望两个GetAccessControl方法返回正确的具体类型-- FileSecurity和DirectorySecurity。如果它们继承自一个公共的GetAccessControl()方法,它们将被迫返回FileSystemSecurity,并且用户将不得不手动转换它。

这主要是一种审美选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9347901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档