要是B中的C的引用是public的A就可以用
不过这种用法不推荐
最好提供接口

解决方案 »

  1.   

    当然可以呀,为什么A不能通过B引用C?A.b.c
      

  2.   

    不知道你说的是“类”级别还是“程序集”级别的引用从“类”级别来看的话,这个问题没多大讨论性从“程序集”级别来看,也就是假设A,B,C都在不同的dll里面,那么,当A需要使用B的时候,A所在的工程就需要引用B所在的dll,而因为B的dll引用了C的dll,C的dll也会被“牵连”进来。也就是说,即使A类没有直接的C类成员,A的工程还是要引用C的dll。以上是我的推测,我没有仔细求证。有一个方法可以完全不引用,也就是用接口了。在一个分开的工程里定义一个接口,让A引用接口工程,然后B工程引用接口工程并实现接口,然后A在程序里使用Reflection动态加载B的dll并且将object转化成接口类型,就可以“不引用C”了——但是其实当你动态加载的时候,B的dll和C的dll都同时加载了,原因很简单——“需要”。