c# - Getting type of generic from interface -


in method whatgenerictypeiam want information implemention not abstraction of generic, see "person" not "abstractmodel" there way or not possible , need redesign?

public class program {     private static void main(string[] args)     {         var container = new containerbuilder();         container.registertype<somea>();         container.registertype<mydependency>().as<imydependency<person>>();  // generic t person         var buildedcontainer = container.build();          var somebase = buildedcontainer.resolve<somea>();         somebase.sayname();           console.readkey();     } }  public interface imydependency<in t> {     void whatgenerictypeiam(); }  public class mydependency : imydependency<abstractmodel> {     private string objectname = typeof (abstractmodel).name;      public void whatgenerictypeiam()     {         console.writeline("my generic type " + objectname );  // shows "abstractmodel" want see "person"     } }  public abstract class abstractmodel  // implemented not person {  }  public class person : abstractmodel {  }  public abstract class somebaseclass<t> t : abstractmodel {     private readonly imydependency<person> _mydependency;      public somebaseclass(imydependency<person> mydependency)  // generic t person      {         _mydependency = mydependency;     }      public void sayname()     {         _mydependency.whatgenerictypeiam();     } }  public class somea : somebaseclass<person> {     public somea(imydependency<person> mydependency) : base(mydependency)     {      } } 

@brentworden hmm don't it, have , it's same problem

namespace consoleapplication1 { public class program {     private static void main(string[] args)     {         var container = new containerbuilder();         container.registertype<somea>();         container.registertype<someb>();         container.registertype<mydependency<abstractmodel>>().as<imydependency>();  // generic t person         var buildedcontainer = container.build();          var somebase = buildedcontainer.resolve<somea>();         somebase.sayname();           console.readkey();     } }  public interface imydependency {     void whatgenerictypeiam(); }  public class mydependency<t> : imydependency {     private string objectname = typeof (t).name;      public void whatgenerictypeiam()     {         console.writeline("my generic type " + objectname );  // shows "abstractmodel" want see "person"     } }  public abstract class abstractmodel  // implemented not person {  }  public class person : abstractmodel {  }  public class otherperson : abstractmodel {  }  public abstract class somebaseclass<t> t : abstractmodel {     private readonly imydependency _mydependency;      public somebaseclass(imydependency mydependency)  // generic t person or otherperson     {         _mydependency = mydependency;     }      public void sayname()     {         console.writeline("my name " + typeof(t)); // want in _mydependency          _mydependency.whatgenerictypeiam();     } }  public class somea : somebaseclass<person> {     public somea(imydependency mydependency) : base(mydependency) //mydependency t person     {      } }  public class someb : somebaseclass<otherperson> {     public someb(imydependency mydependency) : base(mydependency)      //mydependency t otherperson     {      } } 

}

the mydependency class must declared generic class. can use type of generic wish:

public class mydependency<t> : imydependency<t> {     private string objectname = typeof(t).name;      public void whatgenerictypeiam()     {         console.writeline("my generic type " + objectname);     } } 

the way have now, mydependency statically typed abstractmodel.


Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -