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
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to