c# - Dependency injection and additional functionality -


this general problem boil down small. let's have interface generic service.

first part

public interface igenericservice<t> {     void create(t add);     void read();     void update(t obj);     void delete(t obj); } 

and it's implementations:

 public class dogservice : igenericservice<dog>  {      void create(dog add){}      void read(){}      void update(dog obj){}      void delete(dog obj){}  } 

and second repo has unique, additional functionality miau()

 public class catservice: igenericservice<cat>  {      void create(cat add){}      void read(){}      void update(cat obj){}      void delete(cat obj){}      void miau(){}  } 

now when using ioc's go for:

bind<igenericservice<dog>,dogservice> bind<igenericservice<cat>,catservice> 

now somewhere in viewmodel:

public class catsviewmodel {     public catsviewmodel(igenericservice<cat> catservice)     {         //how have miau functionality here?     } } 

1.how can have miau functionality here? should make second interface dogservice idogservice , use way in here? purpose of generic repo ?

second part let's have genericviewmodel this:

public abstract class genericviewmodel<t> {     t collection { get; }     public genericviewmodel(igenericservice<t> service)     {         collection = service.read();     } } 

and fine. if want use catservice

public class catviewmodel : genericviewmodel<cat> {     public catviewmodel(igenericservice<t> service) : base(service)     {         // make miau here?     }  } 
  1. should create icatservice interface , inject instance of same service 2 different interfaces? know can cast igenericservice since know kind of service approach?

    these questions habits not solution works :)


Comments