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

Reply via email to