c# - How to cast a CodeDOM object into its correct type -


i have code generates array of tuples of codecompileunit , codetypedeclarations of different classes. after generate array want able invoke , create instance of given member of array. however, can't seem figure out how name , type of class defined in codetypedeclaration.

var tuple = factory.createtuple(...);  var provider = new csharpcodeprovider(); var parameters = new compilerparameters                     {                         generateinmemory = true,                         includedebuginformation = true                     }; var results = provider.compileassemblyfromdom(parameters, tuple.getcodecompileunit()); var runtimeobj = (????tuple.getcodetypedeclaration().gettype()???)activate.createinstance(results.compileassembly.gettype(tuple.getcodetypedeclaration().name)); runtimeobj.dostuff(); 

any thoughts on how this?

there no way can cast dynamically created type.

i see 2 options here:

  1. make generated type implement non-generated interface , cast that:

    var runtimeobj = (icandostuff)activate.createinstance(…); runtimeobj.dostuff(); 
  2. use dynamic or reflection invoke method:

    dynamic runtimeobj = activate.createinstance(…); runtimeobj.dostuff(); 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -