using System.Collections.Generic;
public static void Main()
var teste = new Foo { details = new List<Detail>() } ;
teste.details.Add(new Detail { data = "oi", data2 = "io"} );
public string baseValue {get;set;}
public class Foo : FooBase, IBoo<Detail>{
public List<Detail> details {get;set;}
public static void Exec(FooBase obj){
Console.WriteLine("Count: " + a.details.Count);
foreach(var item in a.details){
Console.WriteLine("Data: " + item.data);
Console.WriteLine("Data: " + item.data2);
public interface IBoo<T> {
List<T> details {get;set;}
public class Detail: IData {
public string data {get;set;}
public dynamic data2 {get;set;}