C# 重写静态类的最佳实践
由于无法在c#中重写静态类,如果要重写一个方法,我通常会定义一个与静态方法签名匹配的委托,然后按照以下方式修改该方法:C# 重写静态类的最佳实践,c#,static,overriding,C#,Static,Overriding,由于无法在c#中重写静态类,如果要重写一个方法,我通常会定义一个与静态方法签名匹配的委托,然后按照以下方式修改该方法: public static void foo(int bar) { if (delegatename!=null) { delegatename.Invoke(bar); } else { //execute previous code as normal } } 知道这有点混乱,我感到一阵内疚 有人能为这个问题提出一个更简洁的解决方案吗(
public static void foo(int bar)
{
if (delegatename!=null)
{
delegatename.Invoke(bar);
}
else
{
//execute previous code as normal
}
}
知道这有点混乱,我感到一阵内疚
有人能为这个问题提出一个更简洁的解决方案吗(除了重写原始结构)看来您正在使用静态类作为一种方式,为应用程序中的某些资源提供一个单一的访问点。如果是这样的话,你应该考虑使用单体设计模式的实现。这样,您就可以在非静态类上使用继承
public abstract class Base { ... }
public class Impl : Base { ... }
public class Singleton : Impl
{
#region Static Members
static readonly Singleton _instance = new Singleton();
static Singleton() { }
static public Singleton Instance
{
get { return _instance; }
}
#endregion Static Members
#region Instance Members
private Singleton() { }
// Method overrides goes here...
#endregion Instance Members
}
关于如何在C#上实现单例设计模式的更深入的讨论可以在文章中找到。似乎您正在使用静态类作为一种方式,为应用程序中的某些资源提供单一访问点。如果是这样的话,你应该考虑使用单体设计模式的实现。这样,您就可以在非静态类上使用继承
public abstract class Base { ... }
public class Impl : Base { ... }
public class Singleton : Impl
{
#region Static Members
static readonly Singleton _instance = new Singleton();
static Singleton() { }
static public Singleton Instance
{
get { return _instance; }
}
#endregion Static Members
#region Instance Members
private Singleton() { }
// Method overrides goes here...
#endregion Instance Members
}
关于如何在C#上实现单例设计模式的更深入的讨论可以在文章中找到。考虑使用依赖注入,因为静态单例使测试隔离基本上不可能,并且可重用性非常痛苦
单例是很酷的,只是不要使用静态。有很多关于“依赖注入”的资源,谷歌可以很容易地为您找到这些资源。考虑使用依赖注入,因为静态单例使测试隔离基本上不可能,重新可用性非常痛苦
单例是很酷的,只是不要使用静态。有很多关于“依赖注入”的资源,谷歌可以很容易地为您找到这些资源。如果您能告诉我们这些静态类的最初用途,那会有所帮助。如果您想改变行为,使用静态类听起来像是一个糟糕的计划。尝试重写静态方法(这是不允许的)本质上是一个糟糕的做法。你想完成什么?如果你能告诉我们这些静态类的初衷,那会有所帮助。如果您想改变行为,使用静态类听起来像是一个糟糕的计划。尝试重写静态方法(这是不允许的)本质上是一个糟糕的做法。你想完成什么?