Generic extension method with an interface contraint -


i have made generic extension method (i.e asxml) still want constraint interface (ixmlable) on of classes.

as have introduced constraint, of methods arguing me.

one of methods returing list<interest> , compiler says:

the type 'system.collections.generic.list' cannot used type parameter 't' in generic type or method 'mywebapp.entities.extension.asxml(t)'. there no implicit reference conversion 'system.collections.generic.list' 'mywebapp.interfaces.ixmlable'.

this class:

public class person : ixmlable {    public string name { get; set; }    public list<interest> interests { get; set; } // interest class implements ixmlable }  

my extension method looks this:

 public static class extension     {         public static string asxml<t>(this t entity) t : ixmlable         {              return makeitxml(entity);         }     } 

this method:

return mymethodthatreturnsalistofpersons().asxml(); 

you need like

return mymethodthatreturnsalistofpersons().select(p => p.asxml()).tolist(); 

assuming mymethodthatreturnsalistofpersons returns list<person> , want create list<string> containing xml.

this because list<t> not implement ixmlable interface, have manually projection on each person element in list.

if need lot create extension method:

public static list<string> asxmllist<t>(this ienumerable<t> seq) t : ixmlable {     return seq.select(i => i.asxml()).tolist(); } 

so code be:

return mymethodthatreturnsalistofpersons().asxmllist(); 

Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -