抽象类中未实现的构造函数

Mik*_*ela 3 c#

我看到了一些abstract基类.NET提供,我完全迷失了它们的构造函数和虚方法定义的方式.例如,请参阅System.ComponentModel.DataAnnotations.ValidationAttribute基类:

public abstract class ValidationAttribute : Attribute
{
    // Summary:
    //     Initializes a new instance of the System.ComponentModel.DataAnnotations.ValidationAttribute
    //     class.
    protected ValidationAttribute();
    ...
    protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);
}
Run Code Online (Sandbox Code Playgroud)

但我不能在自己的课堂上这样做:

public abstract class MyClass
{
    protected MyClass();      
}
Run Code Online (Sandbox Code Playgroud)

MyClass.MyClass()必须声明一个body,因为它没有标记为abstract,extern或partial

我也无法标记它abstract:

修饰符摘要对此项无效

我没有特别需要MyClassValidationAttribute或其他基类.NET.我只想知道他们是如何在运行时编译的.

Sco*_*ain 6

您没有查看ValidationAttribute的代码,您正在查看其元数据.

实际的构造看起来像

protected ValidationAttribute()
    : this(() => DataAnnotationsResources.ValidationAttribute_ValidationError) {
}
Run Code Online (Sandbox Code Playgroud)