[英]Extend Non-Static Class as Static
我经常使用具有非静态类的自动化库来引用应用程序。 在一个项目中,可以有几十个类,每个类都有自己对这个应用程序的引用。 过去,我只是通过引用该应用程序制作了一个静态类,所有类都可以指向:
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; }
}
}
我还用一些有用的函数填充了该类,这些函数有助于将自动化的局限性扩展到我的需求。 到目前为止,情况一直很好,但我发现自己想更进一步。 我想使SomeAppHelper
扩展SomeApp.coApplication
,以便DLL的用户可以使用简单的SomeAppHelper.functionName()
从我的类和原始类中访问函数 。 另外,我非常想让该类保持静态,以便使用它的每个类都不必实例化它。
我搞砸了基本扩展语法( public static class SomeAppHelper : SomeApp.coApplication
),但是因为从未实例化coApplication
,所以它没有成员。
我也玩弄的尝试设置的想法this
作为返回属性SomeApp.coApplication()
以类似的方式,以我原来的做法:
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#的任何人都可以准确地告诉您使用编译器进行处理的情况。
确实,我对使用的方法并没有那么在意,而只关注结果(拥有一个静态类,开发人员可以通过SomeAppHelper
直接访问SomeApp.coApplication()
和 SomeAppHelper
函数)。 我完全在这里做梦吗? 如果不可能的话,这不会是世界末日,但是拥有这种能力将是很棒的。
您无法以您想要的方式继承。
静态类如何从对象派生?
但是您可以将非静态函数调用包装到SomeAppHelper
上的静态函数中
因此,对于要在静态类中提供的每个函数,您都必须执行此操作
public static ReturnObject FunctionName(Parameters p)
{
return _app.FunctionName(p);
}
只需确保在调用这些静态方法之前已初始化_app
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.