What’s in a name? (C#’s hidden support for structural typing) (togaroga.com)
C# is well known for its nominative type system. This means that C# identifies types and their relationships based on their names. That is why C# does not allow you to create two types with the same name, even if they have a different public interface – the C# compiler only cares about the name of the type.
7 comments
[ 3.1 ms ] story [ 29.7 ms ] threadAOP weavers like postsharp let you do some duck typing like stuff by injecting interfaces as post compile step.
Actually Linq + Reflection is some of the most entertaining code to write C#. Example: http://github.com/ecoffey/Bebop/blob/master/Bebop/BebopAppli...
we're saying there "Give me all the types out of a specific assembly that implement IResource".
Edit: hm.. but I note that this doesn't work for the using(){} construct.
This requires the object to implement an interface that is convertable to IDisposable instead of just looking for a `Dispose` method.