castle windsor and generic types when loading from assembly -


im trying load types specific folder base interface generic: ianalysis

the following syntax works non generic types. :

container.register(classes.fromassemblyindirectory(new assemblyfilter(folder)).basedon<ianalysis>()); 

how can make work generic type? need .basedon<ianalysis<t>>

thanks

amit

you can :

public class mymoduleinstaller : iwindsorinstaller {     public static bool iscontructable(this type t)     {         return !t.isabstract && !t.containsgenericparameters;     }      void iwindsorinstaller.install(iwindsorcontainer container)     {         ienumerable<iregistration> myregistrations = getregistrations();         if (myregistrations != null)         {             container.register(myregistrations .toarray());         }     }      protected virtual ienumerable<iregistration> getregistrations()     {         return new iregistration[]         {             classes.fromassembly(getassemblynamed("thenameofmyassembly"))                 .basedon<imyinterfaceormygenericbase>()                 .if(x => component.isinnamespace("mynamespace", true)(x) && x.iscontructable())                 .withservices(new[] {typeof (imyinterfaceormygenericbase) }))             };     }      // can remove method. added convenience     protected virtual assembly getassemblynamed(string assemblyname)     {         try         {             if(assembly.getexecutingassembly().fullname.split(',')[0] == assemblyname)             {                 return assembly.getexecutingassembly();             }              assembly fromdynamicmoduleloader = mymoduleloader.myassemblies.firstordefault(x => x.getname().name == assemblyname);             if(fromdynamicmoduleloader != null)             {                 return fromdynamicmoduleloader;             }              if(_loadedinappdomain == null)             {                 _loadedinappdomain =                     system.appdomain.currentdomain.getassemblies()                         .where(x => x.fullname.contains(assemblyname))                         .toarray();             }              var fromappdomain = _loadedinappdomain.firstordefault(x => x.fullname.split(',')[0] == assemblyname);              if(fromappdomain != null)             {                 return fromappdomain;             }              return reflectionutil.getassemblynamed(assemblyname);         }         catch(filenotfoundexception)         {             throw;         }     } } 

Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -