我看到了一些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:
修饰符摘要对此项无效
我没有特别需要MyClass像ValidationAttribute或其他基类.NET.我只想知道他们是如何在运行时编译的.
您没有查看ValidationAttribute的代码,您正在查看其元数据.
在实际的构造看起来像
protected ValidationAttribute()
: this(() => DataAnnotationsResources.ValidationAttribute_ValidationError) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |