using System; using System.Collections.Generic; public class Test { public static void Main() { string x = ""; Wrapper xx = x; string[] y = new[] { "" }; Wrapper> yy = y; IEnumerable z = new[] { "" }; Wrapper> zz = z; } } public sealed class Wrapper { private readonly object _value; public Wrapper(T value) { this._value = value; } public static implicit operator Wrapper(T val) { return new Wrapper(val); } }