Extend Non-Static Class as Static
我经常使用具有非静态类的自动化库来引用应用程序。在一个项目中,可以有数十个类,每个类都有自己对这个应用程序的引用。过去,我只是通过引用该应用程序制作了一个静态类,所有类都可以指向:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static class SomeAppHelper { private static IApplication _app = null; public static IApplication app { get { if (_app == null) { _app = new SomeApp.coApplication(); } return _app; } set { _app = value; } } } |
我还为类填充了有用的功能,这些功能有助于将自动化的局限性扩展到我的需求。到目前为止,情况一直很好,但我发现自己想更进一步。我想将
我已经弄乱了基本扩展语法(
我还尝试将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static class SomeAppHelper { private static IApplication _app = null; public static IApplication this { get { if (_app == null) { _app = new SomeApp.coApplication(); } return _app; } set { _app = value; } } } |
我敢肯定,曾经尝试使用C#的任何人都可以准确地告诉您使用编译器进行处理的情况。
确实,我对使用的方法并没有太在意,而只关心结果(拥有一个静态类,开发人员可以通过该类直接访问
您无法以您想要的方式继承。
静态类如何从对象派生?
但是您可以将非静态函数调用包装到
因此,对于要在静态类中提供的每个函数,您都必须执行此操作
1 2 3 4 | public static ReturnObject FunctionName(Parameters p) { return _app.FunctionName(p); } |
只需确保在调用这些静态方法之前已初始化