c# - Wrapping ioc resolve with parameter override -
so, here's problem i'm thinking , use with. firstly, i'm using unity ioc, , want use resolve , produce instances of wrapper sql calls. this, have sqlwrapper implements isqlwrapper. has 2 contructors. here's relevent code snippet.
public interface isqlwrapper : idisposable { string commandtext { get; set; } void execute(); } public class sqlwrapper : isqlwrapper, idisposable { public sqlwrapper(string connectionstring); public sqlwrapper(idbconnection sqlconnection); string commandtext { get; set; } void execute(); } obviously isn't complete code, it's illustrate relevent part of implementation.
for application, i'm using contructor connectionstring. so, in ioc container, i've registered following...
_unitycontainerontainer.registertype<isqlwrapper, sqlwrapper>( new injectionconstructor(typeof(string))); now, things interesting. implement method allow me resolve instance of isqlwrapper. i've boilder code down method.
isqlwrapper createsqlwrapper(string connectionstring) { parameteroverrides parameteroverride = new parameteroverrides(); parameteroverride.add("connectionstring", connectionstring); return _ioccontainer.resolve<isqlwrapper>(parameteroverride); } however, putting copy of method each class i'm using connect database.
public class exampleclass1 : iexampleclass1 { private readonly iioccontainer _ioccontainer; isqlwrapper createsqlwrapper(string connectionstring) { parameteroverrides parameteroverride = new parameteroverrides(); parameteroverride.add("connectionstring", connectionstring); return _ioccontainer.resolve<isqlwrapper>(parameteroverride); } public exampleclass1(iioccontainer ioccontainer) { _ioccontainer = ioccontainer; } public void dostuff(string connectionstring) { using( isqlwrapper sqlwrapper = createsqlwrapper(connectionstring)) { commandtext = "select * table*"; execute; } } } so, problem need have instance of createsqlwrapper in every class make implementing instance of isqlwrapper easier. know use inheritance implement method parent class. however, i'm trying see if there better solution problem.
does have ideas of how can define createsqlwrapper method without needing copy , paste every class?
see answer: how create objects using static factory method?
you can use injectionfactory , pass delegate during configuration.
Comments
Post a Comment