我看到一些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);
}
但我不能在自己的课堂上这样做:
public abstract class MyClass
{
protected MyClass();
}
MyClass.MyClass()必须声明一个正文,因为它没有标记为abstract,extern或partial
我无法标记abstract
:
修饰符摘要对此项目无效
我没有特定需要MyClass
与ValidationAttribute
或.NET
中的其他基类类似。我只是想知道他们是如何在运行时编译的。
答案 0 :(得分:6)
您没有查看ValidationAttribute的代码,而是查看其元数据。
protected ValidationAttribute()
: this(() => DataAnnotationsResources.ValidationAttribute_ValidationError) {
}
答案 1 :(得分:0)
宣布一个身体。
public abstract class MyClass
{
protected MyClass(){}
}