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:
make generated type implement non-generated interface , cast that:
var runtimeobj = (icandostuff)activate.createinstance(…); runtimeobj.dostuff();
use
dynamic
or reflection invoke method:dynamic runtimeobj = activate.createinstance(…); runtimeobj.dostuff();
Comments
Post a Comment