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