Done this but does not work - thanks anyway On Jun 10, 1:05 pm, Nicholas Kilian <[email protected]> wrote: > Public Property CurrentAssembly As Reflection.Assembly > Public Property CurrentAssemblyName As String > Public Property CurrentAssemblyFullName As String > > Public Sub New(ByVal asm As Reflection.Assembly) > ''Code to set properties. > AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf > ResolveAssembly > End Sub > > Private Function ResolveAssembly(ByVal sender As Object, ByVal e As > ResolveEventArgs) As Reflection.Assembly > If e.Name = CurrentAssemblyName Or e.Name = CurrentAssemblyFullName > Then > Return CurrentAssembly > End If > End Function > > -----Original Message----- > From: [email protected] > > [mailto:[email protected]] On Behalf Of Regis Dubois > Sent: 10 June 2011 01:46 PM > To: Castle Project Users > Subject: Re: Problem saving an object created dynamically with reflection > > you can register assemblies and types after the initializarion: > > ActiveRecordStarter.RegisterAssemblies(typeAssembly); > > works fine. (I can create a table but can't save the object). > > Can you please give me some sample code to see what you've put in the > AssemblyResolve event handler? > > On Jun 10, 12:32 pm, Nicholas Kilian <[email protected]> > wrote: > > How is AR/NH meant to know about your type if it's not part of the > > initialisation? > > > The problem is with NH and how it loads assemblies during > > configuration, which is why you should handle the AssemblyResolve > > event and return your runtime compiled assembly. > > > -----Original Message----- > > From: [email protected] > > > [mailto:[email protected]] On Behalf Of Regis > > Dubois > > Sent: 10 June 2011 01:30 PM > > To: Castle Project Users > > Subject: Re: Problem saving an object created dynamically with > > reflection > > > Hi and thanks Nicholas, > > > I am not sure I understand the solution you propose? > > Plus the entire purpose of the exercise for me, is to dynamically > > create assembly AFTER the active record initialization and to register > > it after it's been compiled on the fly. > > > Note that I have tried to explicitly add the class to the solution in > > order to test the following code: > > > ActiveRecordStarter.RegisterTypes(typeof(iTradeType1)); > > iTradeType1 it = new iTradeType1(); > > it.Identifier = "DummyId"; > > it.Col2 = DateTime.Now; > > it.Save(); > > > and it works. > > > So it's definitely something to do with AC or NH beeing unhappy with > > the assembly I have compiled. I am trying to check the assembly > > manifest, without much luck. > > > Any other suggestions are welcomed. > > > On Jun 10, 11:24 am, Nicholas Kilian <[email protected]> > > wrote: > > > I actually had this same problem the other day, eventually found an > > > obscure reference to the actual error in an NH bug report. > > > > You need to handle the AppDomain.CurrentDomain.AssemblyResolve event > > > and return your compiled assembly - do this before initialising > > ActiveRecord. > > > > -----Original Message----- > > > From: [email protected] > > > > [mailto:[email protected]] On Behalf Of Regis > > > Dubois > > > Sent: 10 June 2011 12:00 PM > > > To: Castle Project Users > > > Subject: Problem saving an object created dynamically with > > > reflection > > > > Hi, I am trying to get the following to work without much success: > > > > This class is read from file and compiled in memory: > > > > using System; > > > using Castle.ActiveRecord; > > > using iTradeStorage.ValueObjects; > > > namespace iTradeStorage.ValueObjects { > > > [ActiveRecord] > > > public class iTradeType1 : ActiveRecordBase > > > { > > > [PrimaryKey] > > > public string Identifier { get; set; } > > > [Property] > > > public String Col1 { get; set; } > > > [Property] > > > public DateTime Col2 { get; set; } > > > } > > > } > > > > A table existe in the db that matches this class. (created using > > > UpdateSchema()) > > > > I then try to save an object, the following way: > > > > Type type = _typeManager.GetType(typeVo); //return the > > > type > > > iTradeType1 > > > object theObject = Activator.CreateInstance(type); > > > PropertyInfo[] pis = type.GetProperties(); > > > Dictionary<string, PropertyInfo> propertyInfosPerName = > > > new Dictionary<string, PropertyInfo>(); > > > foreach (PropertyInfo propertyInfo in pis) > > > { > > > //PropertyAttributes pas = propertyInfo.Attributes; > > > propertyInfosPerName.Add(propertyInfo.Name, > > > propertyInfo); > > > } > > > string id = "thisisatest"; > > > propertyInfosPerName["Identifier"].SetValue(theObject, > > > id, null); > > > propertyInfosPerName["Col1"].SetValue(theObject, > > > "col1ValTest", null); > > > propertyInfosPerName["Col2"].SetValue(theObject, > > > DateTime.Now, null); > > > > ((ActiveRecordBase)theObject).Save(); > > > > and get the following exception: > > > > {"Could not perform Save for iTradeType1"} Inner ex: {"Exception > > > occurred getter of > > > Rbs.Gbm.Sgi.iTradeStorage.ValueObjects.iTradeType1.Identifier"} > > > Innder ex: {"Object does not match target type."} > > > > at Castle.ActiveRecord.ActiveRecordBase.InternalSave(Object > > > instance, Boolean flush) in c:\TeamCity\buildAgent\work > > > \e41ee5ead2eba140\src\Castle.ActiveRecord\Framework > > > \ActiveRecordBase.cs:line 601 > > > at Castle.ActiveRecord.ActiveRecordBase.Save(Object instance) in c: > > > \TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord > > > \Framework\ActiveRecordBase.cs:line 510 > > > at Castle.ActiveRecord.ActiveRecordBase.Save() in c:\TeamCity > > > \buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework > > > \ActiveRecordBase.cs:line 1547 > > > at > > > Rbs.Gbm.Sgi.iTradeStorage.ObjectManagement.ObjectManager.StoreObject > > > (S > > > tring > > > objectXml) in > > > C:\Development\Rbs.Gbm.Sgi\iTradeStorage\ObjectManagement > > > \ObjectManager.cs:line 58 > > > at ObjectManagementTests.ObjectManagerTests.StoreObjectTest() in C: > > > \Development\Rbs.Gbm.Sgi\iTradeStorage\Tests\ObjectManagementTests > > > \ObjectManagerTests.cs:line 78 > > > > Can somebody kindly help? > > > > I'd like to try and debug the active record source code but can't > > > seem to find it. Where canI get ahold of it? > > > > Thanks. > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Castle Project Users" 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 > > athttp://groups.google.com/group/castle-project-users?hl=en. > > > -- > > You received this message because you are subscribed to the Google > > Groups "Castle Project Users" 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 > athttp://groups.google.com/group/castle-project-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" 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 > athttp://groups.google.com/group/castle-project-users?hl=en.
-- You received this message because you are subscribed to the Google Groups "Castle Project Users" 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/castle-project-users?hl=en.
