Heh what a post to wake upto, thanks guys, I will look into using the
events look 100 times easier.




Cheers
Stefan

On Fri, Dec 19, 2008 at 7:00 AM, Will Shaver <[email protected]> wrote:
> 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!
>>
>>
>>
>
>
> >
>



-- 
Stefan Sedich
Software Developer
http://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