我正在阅读.NET文档,并遇到了IdentityReference类,其中规定:

表示标识,是NTAccount和SecurityIdentifier类的基类.此类不提供公共构造函数,因此无法继承.

我的困惑是,它说它不能被继承,但它还说它是NTAccountSecurityIdentifier类的基类.根据我的理解,这些类继承了IdentityReference个.

是文档不正确,还是我的理解不完整?文档应该说‘这个类不提供公共构造函数,因此不能是instantiated’吗?

推荐答案

文件是正确的.子类必须能够调用基类构造函数,无论是默认的无参数构造函数还是其他构造函数.IdentityReference类没有public或protected构造函数.如果你试图继承它,你会得到一个编译错误.

该类有an internal constructor个,这允许它自己的程序集中的类从它继承

public abstract class IdentityReference
{
    internal IdentityReference()
    {
        // exists to prevent creation user-derived classes (for now)
    }

NTAccount在同一程序集中定义,因此它可以从IdentityReference继承:

public sealed class NTAccount : IdentityReference
{
...

这个类是sealed,所以其他程序集也不能继承它

Csharp相关问答推荐

如何打印已添加到List的Linq值,而不是C#中的:System.Collections.Generic.List ' 1[System.Int32]?

图形.DrawString奇怪异常的字距调整

编写DataAnnotations自定义验证器的多种方法

程序集.加载从exe的异常

Blazor在FluentButton onClick事件上设置参数

为什么Regex.IsMatch(";\\t";,";\\t";)返回FALSE而不是TRUE?

Automapper 12.x将GUID映射到字符串

当我没有此令牌时,为什么语法报告EOF错误?

是否有必要在ASP.NET Core中注册可传递依赖项?

带有可选参数的模拟方法返回意外的不同值,具体取决于可选的默认值

LINQ to Entities中的加权平均值

避免只读记录 struct 中的防御副本

实体框架-IsRequired()与OnDelete()

用于ASP.NET核心的最小扩展坞

为什么Swashbakle/Swagger在参数中包含变量名?

如何使用IHostedService添加数据种子方法

为什么连接到Google OAuth2后,结果.Credential为空?

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

如何对构建在Clean架构和CQRS之上的控制器进行单元测试?

使用生产环境调试我的应用程序的快速方法