我有一个抽象基类,我想在其中实现一个检索继承类的属性的方法。像这样的东西...
public abstract class MongoEntityBase : IMongoEntity {
public virtual object GetAttributeValue<T>(string propertyName) where T : Attribute {
var attribute = (T)typeof(this).GetCustomAttribute(typeof(T));
return attribute != null ? attribute.GetType().GetProperty(propertyName).GetValue(attribute, null) : null;
}
}
并像这样实施......
[MongoDatabaseName("robotdog")]
[MongoCollectionName("users")]
public class User : MonogoEntityBase {
public ObjectId Id { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string email { get; set; }
[Required]
[DataType(DataType.Password)]
public string password { get; set; }
public IEnumerable<Movie> movies { get; set; }
}
但是当然,对于上面的代码,GetCustomAttribute()
它不是一个可用的方法,因为这不是一个具体的类。
抽象类中需要更改什么typeof(this)
才能访问继承类?或者这不是好的做法,我应该完全在继承类中实现该方法吗?