c# - Pass parameter to envers from castle.windsor -


i'm trying extend envers revinfo class , add properties audit. have web api project, xx.infrastructure.dependency, xx.datalayer.nhibernate libraries , on. i'm using owin auth.

i' m registering , installing container things in xx.infrastructure.dependency library , call installer static method on web api project.

public static webapicontrolleractivator installer()     {         createcontainer();         return new webapicontrolleractivator(_container);     }      private static void createcontainer()     {         _container = new windsorcontainer();          _container.kernel.componentregistered += kernel_componentregistered;          dictionary<string, object> parameters = new dictionary<string, object>();         parameters.add("userid", "10421");          _container.install(new serviceinstaller());         _container.install(new repositoryinstaller());         _container.install(new nhibernateinstaller(parameters));         _container.install(new controllerinstaller());         _container.install(new loggerinstaller());         _container.register(component.for<unitofworkinterceptor>().lifestyle.perwebrequest.lifestyleperwebrequest());     } 

nhibernate installers register sessionfactory...

container.register(             component.for<isessionfactory>().usingfactorymethod((k, m, c) => nhibernatesessionfactory.createsessionfactory(_factoryparameters)).lifestyle.singleton,                 component.for<isession>().usingfactory<isessionfactory, isession>(factory => factory.opensession()).lifestyleperthread()             ); 

and createsessionfactory method below..

var enversconf = new enversnhibernate.configuration.fluent.fluentconfiguration();          list<type> domainentities = appdomain.currentdomain.getassemblies().             where(assembly => assembly.fullname.startswith("xxxx")).             firstordefault().gettypes()             .where(t => (typeof(entity<int>).isassignablefrom(t) || typeof(entity<guid>).isassignablefrom(t) || typeof(entity<ulong>).isassignablefrom(t) ||                 typeof(entity<long>).isassignablefrom(t)) && !t.isgenerictype)             .tolist();          foreach (type type in domainentities)             enversconf.audit(type);          corenhibernate.cfg.configuration cfg = new corenhibernate.cfg.configuration();         cfg = config.buildconfiguration();          cfg.buildmappings();         cfg.setinterceptor(new trackinginterceptor(factoryparameters));          //envers revtype values         //0(add), 1(mod) , 2(del)         configurationkey.audittablesuffix.setuservalue(cfg, "_log");         enversconf.setrevisionentity<customrevinfo>(e => e.id, e => e.revisiondate, new customrevinfolistener(factoryparameters));         cfg.integratewithenvers(enversconf);          config.exposeconfiguration(exp => new schemaupdate(cfg).execute(false, true));         return config.buildsessionfactory(); 

customrevinfo listener below...

public class customrevinfolistener : irevisionlistener {     private ulong _userid = ulong.minvalue;      public customrevinfolistener(dictionary<string, object> additionalparameters) : base()     {         _userid = ulong.parse(additionalparameters["userid"].tostring());     }      public void newrevision(object revisionentity)     {         ((customrevinfo)revisionentity).userid = _userid;     } } 

now i'm trying pass parameters customrevinfolistener add other custom audit properties can't pass constructor parameter add run time way or logic wrong?


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -