/// <summary> /// The main entry point for the application. /// </summary> public static void Main(string[] args) { try { Contact contact = GetProxy(); IIsModified modificationWatcher = (IIsModified)contact; contact.FirstName = "Aleksandar"; if (modificationWatcher.IsModified) { Console.WriteLine("Should not flag as modification"); } contact.FirstName = "Goran"; if (modificationWatcher.IsModified) { Console.WriteLine("Should flag as modification"); } } catch (Exception ex) { Console.Out.WriteLine(); Console.Out.WriteLine(ex); } finally { Console.Out.WriteLine(); Console.Out.WriteLine("--- hit <return> to quit ---"); Console.ReadLine(); } }
public virtual Object Invoke(IMethodInvocation invocation) { MethodInfo method = invocation.Method; object proxy = invocation.Proxy; if (proxy is IIsModified) { IIsModified obj = (IIsModified)proxy; if (IsSetter(method)) { obj.IsModified = HasModificationOccured(method, invocation.This, invocation.Arguments); } } return(invocation.Proceed()); }