ah, and NH can work with all interfaces without the interface
implementation...
I know that to talk about a post of 2008/10/14 seems something old but it
was my second blog-post in my life and a nice memory:
http://fabiomaulo.blogspot.com/2008/10/less-than-few-is-gof.html

2010/3/10 Fabio Maulo <[email protected]>

> I can't see where is the class/interface and relations with what you are
> talking about.
> NH can work with neither classes nor interfaces
> http://fabiomaulo.blogspot.com/2009/07/duck-typing-with-nhibernate.html
>
> If an abstract class or an interface come to the optimizer to
> be instantiated the problem is in another place and not there.
>
> <http://fabiomaulo.blogspot.com/2009/07/duck-typing-with-nhibernate.html>When
> you have a failing test using pure 100% NHibernate we can talk about a
> solution.
>
> 2010/3/10 TU <[email protected]>
>
> On second thought, and this may be more useful, why is
>>                         if (ReflectHelper.IsAbstractClass(mappedClass))
>>                        {
>>                                throw new InstantiationException("Cannot
>> instantiate abstract
>> class or interface: ", mappedClass);
>>                        }
>> first? Shouldn't this only be before
>>                         else
>>                        {
>>                                try
>>                                {
>>                                        return
>> constructor.Invoke(null);
>>                                }
>>                                catch (Exception e)
>>                                {
>>                                        throw new
>> InstantiationException("Could not instantiate entity:
>> ", e, mappedClass);
>>                                }
>>                        }
>> as the optimizer or bytecode provider may know how to create an
>> instance of a specific interface.  It seems to be that NHibernate
>> should only fall back to using the default constructor (and hence have
>> to check if it is an abstract class or interface) if and only if the
>> optimzer/bytecode provider failed to instantiate a new instance of a
>> specific class.
>> On Mar 9, 5:55 pm, Fabio Maulo <[email protected]> wrote:
>> > which is the test ?
>> >
>> > 2010/3/9 TU <[email protected]>
>> >
>> >
>> >
>> > > The below function throws an exception (in my case when it tries to
>> > > instantiate a component interface), if the mappedClass is an
>> > > interface, shouldn't it goto the second/third elseif part and use
>> > > either the optomized creator or the bytecode provider to look up the
>> > > type?  (This way you could have the interface type in your IoC/DI
>> > > setup and it would create it etc).  Or am i just misunderstanding
>> > > something?  This works for everything else (i have interfaces
>> > > everywhere instead of concrete classes and use DI to set them up for
>> > > nhibernate) but for my component i get this exception.  Is this a bug
>> > > or to be expected?  Also if it is to be expected, why?  Can this be
>> > > fixed? (Reorder the if so that if it dosn't find it in the IoC then it
>> > > throws the exception maybe?) If not is there a work around or am i
>> > > doing things totally wrong?  Thank you!
>> > > public object Instantiate()
>> > >                {
>> > >                        if (ReflectHelper.IsAbstractClass(mappedClass))
>> > >                        {
>> > >                                throw new
>> InstantiationException("Cannot
>> > > instantiate abstract
>> > > class or interface: ", mappedClass);
>> > >                        }
>> > >                        else if (optimizer != null)
>> > >                        {
>> > >                                return optimizer.CreateInstance();
>> > >                        }
>> > >                        else if (mappedClass.IsValueType)
>> > >                        {
>> > >                                return
>> > >
>> Cfg.Environment.BytecodeProvider.ObjectsFactory.CreateInstance(mappedClass,
>> > > true);
>> > >                        }
>> > >                        else if (constructor == null)
>> > >                        {
>> > >                                throw new InstantiationException("No
>> default
>> > > constructor for
>> > > entity: ", mappedClass);
>> > >                        }
>> > >                        else
>> > >                        {
>> > >                                try
>> > >                                {
>> > >                                        return
>> constructor.Invoke(null);
>> > >                                }
>> > >                                catch (Exception e)
>> > >                                {
>> > >                                        throw new
>> > > InstantiationException("Could not instantiate entity:
>> > > ", e, mappedClass);
>> > >                                }
>> > >                        }
>> > >                }
>> >
>> > > --
>> > > 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]<nhusers%[email protected]>
>> <nhusers%[email protected]<nhusers%[email protected]>
>> >
>> > > .
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/nhusers?hl=en.
>> >
>> > --
>> > Fabio Maulo
>>
>> --
>> 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]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>
>
> --
> Fabio Maulo
>
>


-- 
Fabio Maulo

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