Assume that there is an interface IX.

The customer requires AX and BX to be 2 implementations of IX, each of which exist in separate DLLs (as per customer's need).

Now, if IX is expected to be shared across AX and BX, should IX be a separate DLL which is "add referenced" by AX and BX ?

The client code using IX will then have to "add-reference" IX too.

Is there something in C#.NET that will allow an implementation similar to C++, where a header file declaring the interface signature would suffice at compile time ?