Consider we have 3-tier app and have got three projects named P1, P2, P3.
Dependency: P1(Data) << P2(Business Logic) << P3(Presentation)
P2 has got a base class X that was inherited in an other class Y in P2. So, we add the ref P1 to P2. However, P3 uses P2.Y and doesn't use P1.X directly.
To do this we have to add ref P2 to P3. But there is a difference between VB and C#.
In VB, we add ref P2 only to P3. P2 uses P1 but it doesn't matters for P3. We don't need to add ref P1 to P3. This is enough!
But, in C#, we have to add ref P1 and P2 both to P3 even if the P3 doesn't use P1.X . If you don't add ref A to C you get the error below:
The type 'P1.X' is defined in an assembly that is not referenced. You must add a reference to assembly 'P1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Why must we add two projects in C#?
Or, instead of this, can we block this behavior?