比方说,我有一个属性类:属性类如何引用使用它的实例?
public class MyCustomAttribute : Attribute
{
// do stuff
}
而且我用类属性这个属性:
public class MyModel : BaseModel
{
[MyCustom]
public string Name { get; set; }
}
有没有一种方式,MyCustomAttribute
代码中,引用的MyModel
实例它正在被使用?
最终,我只是试验AOP(使用PostSharp)来创建属性来跟踪模型是否脏。所以,如果BaseModel
有IsDirty
财产话,我希望能够做这样的事情与PostSharp:
public class TrackDirtyPropertyAttribute : OnMethodBoundaryAspect
{
public override void OnSuccess(MethodExecutionArgs args)
{
someReferenceToTheObject.IsDirty = true;
}
}
我试图传递引用到属性的构造函数:
public class TrackDirtyPropertyAttribute : OnMethodBoundaryAspect
{
private BaseModel _currentObject { get; set; }
public TrackDirtyPropertyAttribute(BaseModel currentObject)
{
_currentObject = currentObject;
}
public override void OnSuccess(MethodExecutionArgs args)
{
_currentObject.IsDirty = true;
}
}
然而,当我使用它:
[TrackDirtyProperty(this)]
public string Name { get; set; }
它告诉我,this
是不是在这方面提供。
在在其编织正在发生的事情的时候,就会出现0 *实例*之类的 - 你的属性与类相关联,*不*有类的一个实例。 – 2012-03-23 15:01:55
如果使用PostSharp,那么你会想要做@Gael Fraiteur建议的。 – ILovePaperTowels 2012-03-23 15:42:35