// Compiler options: -t:library public interface I { T Value { get; } } public class AI: I { public object Value { get; set; } } public class External { public dynamic DynamicProperty { get; set; } public dynamic Field; public dynamic[,] FieldArray; public dynamic Method (dynamic d) { return d; } public void MethodOut (out dynamic d) { d = decimal.MaxValue; } public I[] Method2 (dynamic d) { return new [] { new AI () { Value = d }}; } // Same as Method2 to check we are interning dynamic public I[] Method3 (dynamic d) { return d; } } public class CI : I { public T Value { get; set; } } public class CI2 : CI { }