class MainClass { static class TypeConverter where TIn : class where TOut : struct { public static bool Convert(TIn input) { if (input is TOut) { return true; } return false; } } public static int Main() { object x = 3; if (TypeConverter.Convert(x)) return 1; if (!TypeConverter.Convert(new S())) return 2; return 0; } } interface I { } struct S : I { }