c# - Return a different list depending on generic -


i've asked question before don't think explained myself i'm going try again.

i have below code;

public interface idocumentmerger {     list<???????> process(); }  public class emailmerger : idocumentmerger {     public void process()     {         return new list<mailmessage>();     }  }  public class documentmerger<t> t : idocumentmerger {     public t objmerger;      public documentmerger()     {         type t = typeof(t);         objmerger = (t)activator.createinstance(t);     }      public list<???????> process()     {         return objmerger.process();     }  } 

i want use above this;

documentmerger<emailmerger> merger = new documentmerger<emailmerger>(); list<mailmessage> messages = merger.process();  documentmerger<smsmerger> merger = new documentmerger<smsmerger>(); list<smsmessage> messages = merger.process(); 

but can't figure out how return either list of type mailmessage or list of type smsmessage depending on whether create documentmerger passing int either mailmerger or smsmerger.

your interface needs generic:

public interface idocumentmerger<doctype> {   list<doctype> process();  }  

then classes need implement generic interface:

public class emailmerger : idocumentmerger<mailmessage> public class smsmerger : idocumentmerger<smsmessage> 

i'm not sure why have documentmerger class this:

public class documentmerger<mergertype, doctype> mergertype : idocumentmerger<doctype> 

and methods need return appropriate types:

// in emailmerger public list<mailmessage> process()    // in smsmerger public list<smsmessage> process()    // in documentmerger public list<doctype> process() 

why don't make emailmerger/smsmerger instances though, documentmerger wrapping 1 of these @ time (using reflection no less)?


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -