Generic extension methods
I was playing around with the compiler when I hit this interesting feature. I was very surprised to see that this has compiled successfully.
1: static class Program2: {3: static void Main(string[] args)4: {5: IProcesser<GZipStream> p = null;6: p.HasTimeout();7: }8: }9:10: public static class Extensions11: {12: public static bool HasTimeout<T>(this IProcesser<T> s)13: where T : Stream14: {15: return s.Desitnation.CanTimeout;16: }17: }18:19: public interface IProcesser<TDestination>20: where TDestination : Stream21: {22: TDestination Desitnation { get; }23: }

Comments
Comment preview