- aopforcodeproject.zip
- AOPClasses
- AOPDemo
- AOPDemo2
- AOPDemo3
- AOPDemo4
- AOPDemo5
- AOPForCodeProject.sln
- AOPLibrary
- AOP
- AOPLibrary.csproj
- AOPLibrary.csproj.user
- MockObjects
- obj
- Debug
- TempPE
- Release
- TempPE
- Properties
- PropertyChangeTracking
- BrainTechLLC.Core
- LinFu.AOP
- .svn
- LinFu.AOP.CecilExtensions
- LinFu.AOP.Examples
- LinFu.AOP.Interfaces
- .svn
- LinFu.AOP.Interfaces.csproj
- obj
- Debug
- LinFu.AOP.Interfaces.dll
- Refactor
- LinFu.AOP.Interfaces.dll
- TempPE
- Release
- LinFu.AOP.Interfaces.dll
- Refactor
- LinFu.AOP.Interfaces.dll
- TempPE
- Properties
- LinFu.AOP.sln
- LinFu.AOP.Tasks
- LinFu.AOP.vssscc
- LinFu.AOP.Weavers.Cecil
- Mono.Cecil.dll
- PostWeaver
- Simple.IoC
|
using System;
using System.Reflection;
using System.Windows.Forms;
using System.Collections.Generic;
using System.IO;
using System.ComponentModel;
using System.Collections;
using System.Text;
using System.Threading;
using System.Runtime.Serialization.Formatters.Binary;
using BrainTechLLC.ThreadSafeObjects;
using LinFu.AOP;
using LinFu.AOP.Interfaces;
namespace BrainTechLLC
{
[Serializable, AttributeUsage(AttributeTargets.Method)]
public class ObservableMethodAttribute : Attribute, IReadableAttribute
{
public bool IsObservable { get; set; }
public object Value { get { return IsObservable; } }
public ObservableMethodAttribute(bool isObservable)
{
IsObservable = isObservable;
}
public ObservableMethodAttribute()
{
IsObservable = true;
}
public void DoWorkBefore(IInvocationContext context, object thisObject)
{
Type t = thisObject.GetType();
Observable observable = Lookups.ObservableMethods.Get(t.Name + "." + context.TargetMethod.Name);
observable.RaiseNotify(true, thisObject, context, null, null);
}
public void DoWorkAfter(IInvocationContext context, object thisObject, object returnValue)
{
Type t = thisObject.GetType();
Observable observable = Lookups.ObservableMethods.Get(t.Name + "." + context.TargetMethod.Name);
observable.RaiseNotify(false, thisObject, context, returnValue, null);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Currently working as a Senior Silverlight Developer with Troppus Software in Superior, CO. I enjoy statistics, programming, new technology, playing the cello, and reading codeproject articles.