有没有一种简单的方法可以在继承库中包装C#接口?

有没有一种简单的方法可以在继承库中包装C#接口?,c#,C#,例如,有一个ThirdPartyLibrary包含许多接口。我为特定目的创建了一个包装库,我只需要Interface1、Interface2和Interface3,我将把它们传递给用户 我的库将有PrivateAssets=“all”,因此用户不能使用“非公共”库 现在,我有两个选择: 单独复制每个接口,例如,IMyInterface:i接口接口接口 用户下载ThirdPartyLibrary以访问iHirdPartyInterface 选项1听起来很痛苦,我不希望用户下载选项2中的Thir

例如,有一个
ThirdPartyLibrary
包含许多接口。我为特定目的创建了一个包装库,我只需要
Interface1
Interface2
Interface3
,我将把它们传递给用户

我的库将有
PrivateAssets=“all”
,因此用户不能使用“非公共”库

现在,我有两个选择:

  • 单独复制每个接口,例如,
    IMyInterface
    i接口接口接口

  • 用户下载
    ThirdPartyLibrary
    以访问
    iHirdPartyInterface

  • 选项1听起来很痛苦,我不希望用户下载选项2中的
    ThirdPartyLibrary
    ,然后接触到所有他们不需要的东西

    有没有一种方法可以简单地列出我需要带到新名称空间的内容

    Using ThirdPartyLibrary.Extra.Things.Required;
    
    ThirdPartyLibrary.Interfaces.Interface1 : MyLibrary.Interfaces.Interface1
    ThirdPartyLibrary.Interfaces.Interface2 : MyLibrary.Interfaces.Interface2
    ThirdPartyLibrary.Interfaces.Interface3 : MyLibrary.Interfaces.Interface3
    

    如果我正确理解了您的问题,那么您希望只向库的调用者公开您的接口,而不是依赖项的接口

    只需公开从它们继承的接口,将其所有公共成员公开给调用方:

    namespace YourNamespace
    {
        public interface MyLibrary.Interfaces.Interface1 : ThirdPartyLibrary.Interfaces.Interface1 { }
        public interface MyLibrary.Interfaces.Interface2 : ThirdPartyLibrary.Interfaces.Interface2 { }
        public interface MyLibrary.Interfaces.Interface3 : ThirdPartyLibrary.Interfaces.Interface3 { }
    }
    

    但是,如果您的库确实是一个包装器库,您可能不希望这样做,因为现在如果ThirdPartyLibrary更新了它的一个接口,您的接口也将被更改。

    如果我正确理解您的问题,您希望只向库的调用者公开您的接口,而不是您的依赖项

    只需公开从它们继承的接口,将其所有公共成员公开给调用方:

    namespace YourNamespace
    {
        public interface MyLibrary.Interfaces.Interface1 : ThirdPartyLibrary.Interfaces.Interface1 { }
        public interface MyLibrary.Interfaces.Interface2 : ThirdPartyLibrary.Interfaces.Interface2 { }
        public interface MyLibrary.Interfaces.Interface3 : ThirdPartyLibrary.Interfaces.Interface3 { }
    }
    

    但是,如果您的库确实是一个包装库,您可能不希望这样做,因为现在如果ThirdPartyLibrary更新了它的一个接口,您的接口也会发生更改。

    我想这是一个折衷方案,这取决于我希望遵循ThirdPartyLibrary功能的程度?如果我更新ThirdPartyLibrary,我的接口可能无论如何都不兼容。我想这是一个折衷方案,取决于我希望遵循ThirdPartyLibrary功能的程度?如果我更新ThirdPartyLibrary,我的接口可能会不兼容。不,没有简单的修复方法。您可以从第三方程序集继承自己的接口,这将带来对第三方程序集的依赖,并公开其中的所有内容,或者如果您想真正隐藏第三方程序库代码,则需要使用自己的接口公开自己的类,它内部映射到对第三方对象的调用。不,没有简单的修复方法。您可以从第三方程序集继承自己的接口,这将带来对第三方程序集的依赖,并公开其中的所有内容,或者如果您想真正隐藏第三方程序库代码,则需要使用自己的接口公开自己的类,其中映射到对第三方对象的调用。