using System; using System.Collections.Generic; public class Test { public static void Main() { string x = ""; Wrapper xx = x; string[] y = new[] { "" }; Wrapper yy = y; var 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); } }