Now you've just got me all confused and showing my ignorance. ;)
On Thu, Dec 18, 2008 at 1:55 PM, Tuna Toksöz <[email protected]> wrote: > and assuming you are not talking about managed c++ > > > On Thu, Dec 18, 2008 at 11:52 PM, Tuna Toksöz <[email protected]> wrote: > >> boxing in c++? >> Are you sure that casting takes cycles? I think it doesn't, because it is >> the cmpilers job to cast. >> >> On Thu, Dec 18, 2008 at 11:25 PM, Will Shaver <[email protected]>wrote: >> >>> Yes, but with both Daniel and Tuna's examples are incomplete. >>> if (typeof(IAuditableEntity).IsAssignableFrom(entity.GetType())) { >>> ((IAuditableEntity) entity).Audit(); >>> } >>> or >>> if (entity is IAuditableEntity) { >>> ((IAuditableEntity) entity).Audit(); >>> } >>> >>> In BOTH cases you have to do TWO casts. In mine you only have to do one. >>> I learned in C++ where casting and boxing take cycles. >>> >>> -Will >>> >>> >>> On Thu, Dec 18, 2008 at 1:17 PM, Tuna Toksöz <[email protected]> wrote: >>> >>>> or >>>> >>>> if (entity is IAuditableEntity) >>>> ? :) >>>> >>>> On Thu, Dec 18, 2008 at 11:08 PM, Daniel Fernandes < >>>> [email protected]> wrote: >>>> >>>>> >>>>> Beside the point I know but : >>>>> if (typeof(IAuditableEntity).IsAssignableFrom(entity.GetType())) { >>>>> to >>>>> var auditable = entity as IAuditableEntity; >>>>> if (auditable != null) { >>>>> >>>>> isn't easier to read ? >>>>> >>>>> >>>>> >>>>> On Dec 18, 6:35 am, "Stefan Sedich" <[email protected]> wrote: >>>>> > Hello, >>>>> > >>>>> > I am setting date last modified audit on an entity, I implement an >>>>> > IAuditableEntity interface and use a helper to set the date modified: >>>>> > >>>>> > public override bool OnFlushDirty(object entity, object id, object[] >>>>> > currentState, object[] previousState, string[] propertyNames, >>>>> > global::NHibernate.Type.IType[] types) { >>>>> > >>>>> > if >>>>> (typeof(IAuditableEntity).IsAssignableFrom(entity.GetType())) { >>>>> > >>>>> > // If entity is auditable as this is only an update >>>>> > set the last modified date. >>>>> > SetValue(propertyNames, currentState, item => >>>>> > item.LastModified, DateTime.Now); >>>>> > >>>>> > } >>>>> > >>>>> > return false; >>>>> > } >>>>> > >>>>> > Type safe helper: >>>>> > >>>>> > public void SetValue<T>(string[] propertyNames, object[] state, >>>>> > Expression<System.Func<IAuditableEntity, T>> propertyExpression, T >>>>> > value) { >>>>> > >>>>> > var memberExpression = propertyExpression.Body as >>>>> MemberExpression; >>>>> > if (memberExpression == null) >>>>> > throw new ArgumentException("The member expression >>>>> was >>>>> > not a valid member expression."); >>>>> > >>>>> > string name = memberExpression.Member.Name; >>>>> > int index = propertyNames.ToList().IndexOf(name); >>>>> > >>>>> > if(index == -1) >>>>> > throw new >>>>> > InvalidOperationException(string.Format("Property {0} does no exist >>>>> on >>>>> > entity.", name)); >>>>> > >>>>> > state[index] = value; >>>>> > >>>>> > } >>>>> > >>>>> > Now the question is, I saw that you must set the current state and >>>>> not >>>>> > the entity directly why would >>>>> > >>>>> > var ent = entity as IAuditableEntity; >>>>> > ent.LastModified = DateTime.Now; >>>>> > >>>>> > Not work properly or will it be fine to do this? >>>>> > >>>>> > Thanks >>>>> > >>>>> > -- >>>>> > Stefan Sedich >>>>> > Software Developerhttp://weblogs.asp.net/stefansedich >>>>> >>>>> >>>> >>>> >>>> -- >>>> Tuna Toksöz >>>> http://tunatoksoz.com >>>> >>>> Typos included to enhance the readers attention! >>>> >>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> -- >> Tuna Toksöz >> http://tunatoksoz.com >> >> Typos included to enhance the readers attention! >> >> > > > -- > Tuna Toksöz > http://tunatoksoz.com > > Typos included to enhance the readers attention! > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
