c# - List of generic interfaces -
if have generic interface couple of implementing classes such as:
public interface idataelement<t> {     int dataelement { get; set; }     t value { get; set; } }  public class integerdataelement : idataelement<int> {     public int dataelement { get; set; }     public int value { get; set; } }  public class stringdataelement : idataelement<string> {     public int dataelement { get; set; }     public string value { get; set; } }   is possible pass collection of implementing classes of differing types, without having resort passing object.
it not appear possible define return values as
public idataelement<t>[] getdata()   or
public idataelement<object>[] getdata()    any suggestions?
you can declare:
public idataelement<t>[] getdata<t>()   and
public idataelement<object>[] getdata()   although latter isn't you're after (your interface won't variant in c# 4 uses
tin both input , output position; if variant, wouldn't able use variance value types). former require caller specify<t>, e.g.foo.getdata<string>();
is okay you?
there's no way of expressing "a collection of object, each of implements idataelement<t> different t" unless give nongeneric base class, @ use ilist<idataelement>. in case nongeneric idataelement have dataelement property, leaving value property in generic interface:
public interface idataelement {     int dataelement { get; set; } }  public interface idataelement<t> : idataelement {     t value { get; set; } }   is useful in particular situation?
it's not clear how you'd want use collection of data elements without knowing types... if above doesn't you, maybe more expected collections.
Comments
Post a Comment