So figured this out, I was able to get DI working with a default
constructor and registering the events with .AsSelf() instead of
.AsImplementedInterfaces()
On Monday, January 16, 2017 at 7:43:36 PM UTC-5, Sammi Sinno wrote:
>
> I'm trying to do simple constructor injection with NHibernate Event
> Listners, here is an example:
>
> public class FormGeneratorUpdate : IPostUpdateEventListener
> {
> private readonly IHostingEnvironment _env;
>
>
> public FormGeneratorUpdate(IHostingEnvironment env)
> {
> _env = env;
> }
>
>
> public void OnPostUpdate(PostUpdateEvent @event)
> {
> string typeName = @event.Entity.GetType().Name;
> dynamic entity = @event.Entity;
> string filePath =
> $
> "{_env.ContentRootPath}\\App_Data\\FormGenerator\\{typeName}\\{entity.Id}.json"
> ;
>
>
> File.Delete(filePath);
>
>
> string json = JsonConvert.SerializeObject(entity);
> using (FileStream fs = File.Create(filePath))
> {
> // Add some text to file
> Byte[] content = new UTF8Encoding(true).GetBytes(json);
> fs.Write(content, 0, content.Length);
> }
> }
> }
>
>
> I currently set up the NHibernate bytecodeProvider to the autofac
> implementation like so:
>
> NHibernate.Cfg.Environment.BytecodeProvider =
> new AutofacBytecodeProvider(_container, new
> ProxyFactoryFactory(), new DefaultCollectionTypeFactory());
>
> This seems to work just fine when building the session factory, but the
> question I have is how do I register an event listener with an NHibernate
> configuration without first instantiating it? Every way I can register it
> requires me to first instantiate the object like so:
>
> cfg.SetListener(ListenerType.Update, new FormGeneratorUpdate());
>
>
> Since the constructor is not empty it is throwing an error... I've tried
> just registering the event listeners with Autofac and not setting them on
> the configuration and that doesn't seem to work either, I believe I have to
> set it on the configuration as well some how.
>
>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.