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

Reply via email to