public GuardPropertyEqualityTransformation(AspectWeaver aspectWeaver) : base(aspectWeaver) { //Initialize Transformation fields var module = AspectInfrastructureTask.Project.Module; _assets = module.Cache.GetItem(() => new TransformationAssets(module)); this.Effects.Add(PostEdgeStandardEffects.GuardPropertyEquality); this.Dependencies.Add( new AspectDependency( AspectDependencyAction.Order, AspectDependencyPosition.Before, new OrDependencyCondition( new AspectEffectDependencyCondition(StandardEffects.ChangeControlFlow) ) ) ); this.Dependencies.Add( new AspectDependency( AspectDependencyAction.Order, AspectDependencyPosition.After, new OrDependencyCondition( new AspectEffectDependencyCondition(PostEdgeStandardEffects.RaisesPropertyChangedEvent) ) ) ); }
public GuardPropertyEqualityMethodBodyWrappingImplementation(IPropertyTransformationContext transformationContext, AspectInfrastructureTask task, MethodBodyTransformationContext context) : base(task, context) { if (transformationContext == null) throw new ArgumentNullException("transformationContext"); _transformationContext = transformationContext; _assets = _transformationContext.Module.Cache.GetItem( () => new TransformationAssets(_transformationContext.Module)); }
public EnhancePropertySetterMethodBodyWrappingImplementation(IPropertyTransformationContext transformationContext, AspectInfrastructureTask task, MethodBodyTransformationContext context) : base(task, context) { if (transformationContext == null) throw new ArgumentNullException("transformationContext"); _transformationContext = transformationContext; _assets = _transformationContext.Module.Cache.GetItem( () => new TransformationAssets(_transformationContext.Module)); _stringTypeSignature = _transformationContext.Module.Cache.GetIntrinsic(typeof(string)); }
private static bool CheckIfIsLocationBinding(MethodBodyDeclaration methodBody, TransformationAssets assets) { bool isLocationBinding = methodBody.Method.Name == "SetValue" && methodBody.Method.DeclaringType.IsDerivedFrom(assets.LocationBindingTypeSignature.GetTypeDefinition()); return isLocationBinding; }