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!

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