Local Interface to an external SOAP web service (C#) -
i want access methods of external class (web service) in parent method (the web service instantiated in child class)
the scenario such : have mother class called convertcurrency takes in dollars , gives rupees. eg. int convertcurrency(int dollars);
now there standard vendor out there in market provides software can host on server , create webservice. so, lets hosted @ 2 places : www.link-a.com/service.asmx , www.link-b.com/service.asmx.
i have parent class : currencyconvertor, , has 2 subclasses : convertor-a , convertor-b.
class currencyconvertor { protected object service; public convert(int dollars) { service.convertcurrency(dollars); } } class convertor-a : currencyconvertor { public convertor-a() { service = link-a.service; } } class convertor-b : currencyconvertor { public convertor-b() { service = link-b.service; } } // based on current response-time of 2 servers, decide // b faster , hence make decision @ run-time should use // b's service currencyconvertor cc = new convertor-b(); cc.convert(5);
but won't compile because parent class doesn't know methods service has , gives following error :
'object' not contain definition 'getsources' , no extension method 'getsources' accepting first argument of type 'object' found (are missing using directive or assembly reference?)
i'm wondering can possible solution problem. of course, without having resort creating separate convert function each of 2 providers.
if can somehow make "service" object aware of interface (i.e. function signatures), work fine.
is there way around problem ?
create abstract method in currencyconvertor called getservice(); deriving classes have implement method in way return service ...
in currencyconverter:
public abstract imynewservicethingy getservice();
the base class can use class service , call methods on it
in every deriving class:
public override imynewservicethingy getservice() { return service; }
setting service variable on class - levlel bad decision, worse, when reset when creating derived class (in constructors) - can never know service set.. (esp. when using ioc or asynchronous calls)
Comments
Post a Comment