我当前正在编写一个使用一些继承的DLL文件。现在我在公开我的类时遇到了麻烦,因为所有基类也都公开了。
例如:
public Class TestBase // Base class that gets exposed
{
}
public Class TestFunctions : TestBase // The class that I want to expose gets exposed
{
}
内部或其他修饰符(如受保护的)的问题:
internal Class TestBase // Base class that won't get exposed
{
}
internal Class TestFunctions : TestBase // The class that I want to expose won't get exposed either
{
}
我想向DLL文件的用户公开TestFunctions
,但是我不想公开TestBase
,因为基类仅在内部使用。公开基类对于DLL的用户是多余的,因为他需要的所有内容都包含在一个函数类中。我如何实现我所需要的?我听说接口可以帮助我,但是我无法弄清楚我到底需要做什么,因为用户无法实例化实例。
答案 0 :(得分:1)
您可以使用工厂方法和接口:
例如:
//your classes: internal
internal class TestBase // Base class that I dont want to expose
{
}
//note: added interface
//note2: this class is not exposed
internal class TestFunctions : TestBase, IYourTestClass // The class that I want to expose
{
}
//an interface to communicate with the outside world:
public interface IYourTestClass
{
//bool Test(); some functions and properties
}
//and a public factory method (this is the most simple version)
public static class TestClassesFactory
{
public static IYourTestClass GetTestClass()
{
return new TestFunctions();
}
}
因此,在呼叫者的应用程序中,现在都没有公开两个类。相反,您可以使用工厂来请求一个新的工厂:
public void Main()
{
IYourTestClass jeuh = TestClassesFactory.GetTestClass();
}