需要来自另一个dll的类作为API的输入?

时间:2014-12-05 04:48:03

标签: c# visual-studio dll interface projects-and-solutions

我有3个C#项目:A,B和C. B引用C和A引用B(A - > B - > C)。 B是A的API,C为B做了一些较低级别的工作。

B向A公开一些公共方法,这些方法当前需要一个来自C的类作为输入。 A是否有办法在不直接引用C的情况下创建所需类的实例?

B在其API中要求C中的类是不是很糟糕?在B中创建一个从C镜像类的类是否更好,以便B只暴露一个完全依赖于它自己的API?

1 个答案:

答案 0 :(得分:0)

  

" A是否有办法在不直接引用C的情况下创建所需类的实例?"

如果你想让A知道它正在做什么,那就没有了。当然,您可以使用A调用B来创建一个他们都知道的接口的实例,这个接口由C中的类实现。

  

" B在其API中要求使用C类是不是很糟糕?"

以什么方式不好?在各种库中都有先例,包括.NET本身。它对我来说似乎并不是坏事,它可能是解决本来会涉及循环引用的最好方法(不是你的场景中的问题,但它确实出现了,这个是一种解决它的方法。)

  

"在B中创建一个反映C类的类,以便B只公开一个完全依赖于它自己的API会不会更好?"

有时候有充分的理由创建这样的代理对象,但这样做只是为了将一个类型的DLL隐藏在另一个DLL中吗?不,我不明白这是怎么回事。如果你想完成之类的,那么正确的方法是声明A和B所知的接口,并由C中的类实现。