公开引用的类型(类)而不需要额外的引用

And*_*iff 6 c# dll reference layer

我在我的应用程序之间有一个.dll分层系统,其中最低级别有一个提供某些功能的类 - 这个类的实例可以通过GetClass()函数接收,然后我可以访问它的属性(基本上是一个集合改变对象的信息).

现在我注意到,当我想从下一个更高级别.dll访问该信息时,编译器抱怨我没有引用较低级别的.dll(定义类的那个) - 实际上我想要避免,到在我的架构中有一个很好的分层结构.

怎么解决这个问题?我可以重新公开引用的类型吗?如果我想要完全相同的功能,我真的必须写一个我自己的包装器吗?或者我甚至需要再次引用低级别.dll?

(如果有帮助:

dll1: class myClass, myClass GetMyClass()
dll2: myClass GetMyClass()
exe: how to access result from calling GetMyClass (dll2) without referencing dll1?
Run Code Online (Sandbox Code Playgroud)

)

Ale*_*kov 2

似乎没有办法实现这一点,因为 ifmyClass是在 中定义的dll1,因为类型的对象myClass可以在运行时实例化。GetMyClass()为了避免这种情况,您需要更改in的返回类型dll2以返回 中定义的内容dll2。它可以是一个与类非常相似myClass并具有相同属性的类(您甚至可以使用AutoMapper等工具轻松地在对象之间进行转换),但它绝对应该在dll2. 就像是:

// dll1
class myClass
{
    ...
}

myClass GetMyClass()
{
    ...
}

// dll2
class myClass2
{
    public myClass2(myClass c)
    {
        // instantiate myClass2 with values from myClass
    }
}

myClass2 GetMyClass()
{
    // somehow get myClass and convert it to myClass2 here
}
Run Code Online (Sandbox Code Playgroud)