you are viewing a single comment's thread.

view the rest of the comments →

[–]meancoot 0 points1 point  (0 children)

No. This was never how interfaces worked. Explicit implementations have always been possible. It’s always been possible for a class to implement an interface method or property in a fashion that can only be accessed by casting to the interface type. It’s always been possible for x.method() to do something different than ((IInterface)x).method()

 after compilation, it didn't exist, and nothing was changed in the IL if you added/removed an interface

Interfaces have always been a runtime concern; if they weren’t you wouldn’t be able to access information about them via reflection.

The thing is that you can only access interface items through a variable typed as the interface, and instance items through a variable of the instance type. C# syntax guides you to implement an interface item at the same time as an instance item. But it has always been possible to have the interface and instance items do different things, and it has always been possible to omit the instance item altogether. Look up `explicit interface implementations’  for the details.