Assuming Subscription implements ISubscription, there is an explicit cast:
Subscription sub = (Subscription) iSub;
But you can't do it implicitly like this:
Subscription sub = iSub;
Why not? Well ... it's explicitly forbidden!
If you look here: (it's retired documentation, so you'll have to download the PDF)
It says:
Quote:
User-defined conversions are not allowed to convert from or to interface-types. In particular, this restriction ensures that no user-defined transformations occur when converting to an interface-type, and that a conversion to an interface-type succeeds only if the object being converted actually implements the specified interface-type.
Which means you cannot define an implicit conversion from an interface to a concrete type.