fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. public class Program
  6. {
  7. public interface ITaggable {}
  8.  
  9. public struct TagStruct : ITaggable {}
  10. public class TagObject : ITaggable {}
  11.  
  12. public static IEnumerable<T> DoSomething<T>(IEnumerable<T> input)
  13. where T: ITaggable
  14. {
  15. foreach (var i in input) yield return i;
  16. }
  17.  
  18. public static void Main(string[] args)
  19. {
  20. var structs = new [] { new TagStruct() };
  21. var objects = new [] { new TagObject() };
  22.  
  23. Console.WriteLine(DoSomething(structs).First().GetType());
  24. Console.WriteLine(DoSomething(objects).First().GetType());
  25.  
  26.  
  27.  
  28. }
  29. }
  30.  
Success #stdin #stdout 0.02s 36984KB
stdin
Standard input is empty
stdout
Program+TagStruct
Program+TagObject