using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { interface IHoge { T Value { get; } } class HogeContainer { private IList> values = new List>(); public IList> Values { get { return this.values; } set { this.values = value; } } } class A : IHoge where T : struct { public ValueType Value { get; set; } } class Program { static void Main(string[] args) { var cntnr = new HogeContainer(); cntnr.Values.Add(new A() { Value = 1 }); cntnr.Values.Add(new A() { Value = '1' }); cntnr.Values.Add(new A() { Value = 1.1d }); foreach (var o in cntnr.Values) { Console.WriteLine(o.Value); } return; } } }