public class StrangeConversion
public class SomeClass { }
public interface ISomeInterface { }
public class Implementation : SomeClass, ISomeInterface { }
public void Foo<T>() where T : class
SomeClass a = (SomeClass)x;
SomeClass b = (SomeClass)(object)x;
return new Implementation();