从Property Attribute访问基类

时间:2013-07-06 13:49:00

标签: c# .net

我正在尝试创建属性,该属性将为类范围中的每个对象生成标识号键。所以我需要知道哪个类包含与属性相关的参数。 我创造了这样的东西:

class SampleModel
{
    [Identity(typeof(SampleModel))]
    public int Id { get; set; }
}


public class IdentityAttribute : Attribute
{
    private readonly int _step;
    private readonly Type _objectType;

    public IdentityAttribute(Type type)
    {
        _step = 1;
        _objectType = type;
    }

    public object GenerateValue()
    {
        return IdentityGenerator.GetGenerator(_objectType).GetNextNum(_step);
    }
}

但我想知道是否有任何方法可以让我在IdentityAttribute构造函数中获取基类类型(在本例中为SampleMethod)而不将其作为参数发送?

1 个答案:

答案 0 :(得分:1)

没有这样的方法 - Attribute的实例不知道它的装饰是什么。

创建实例的代码确实如此,因此根据使用情况,您可以在外部注入此信息:

 var identityAttribute = (IdentityAttribute)Attribute.GetCustomAttribute(...);

 // If you can call GetCustomAttribute successfully then you can also easily
 // find which class defines the decorated property
 var baseClass = ... ;

 // And pass this information to GenerateValue
 var value = identityAttribute.GenerateValue(baseClass);