有没有一种简单的方法可以在继承库中包装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
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,我的接口可能会不兼容。不,没有简单的修复方法。您可以从第三方程序集继承自己的接口,这将带来对第三方程序集的依赖,并公开其中的所有内容,或者如果您想真正隐藏第三方程序库代码,则需要使用自己的接口公开自己的类,它内部映射到对第三方对象的调用。不,没有简单的修复方法。您可以从第三方程序集继承自己的接口,这将带来对第三方程序集的依赖,并公开其中的所有内容,或者如果您想真正隐藏第三方程序库代码,则需要使用自己的接口公开自己的类,其中映射到对第三方对象的调用。