gpt4 book ai didi

c# - 可以在 C# 中使用带有非默认构造函数的单例吗?

转载 作者:行者123 更新时间:2023-11-30 15:12:42 26 4
gpt4 key购买 nike

我正在为我的一个项目实现通知框架。因为我希望它非常通用,所以用户可以使用多个传输层,这样他就不需要真正关心使用一种交付方法(比如 WCF)或另一种(例如 ActiveMQ)。用户可以访问的界面当然独立于交付方法(WCF 或 ActiveMQ)。不过,这两个类(消费者和生产者)实现了单例,因此它们实际上使用默认构造函数(意思是没有参数)。我的问题是我想要一个参数,即用户想要使用的交付方式。但据我所知,单例只使用默认构造函数?这是正常的,因为没有必要使用带参数的单例。那么,我在这里有什么选择?不创建单例?创建一个方法来设置交付方式?

非常感谢您的帮助,

塞巴斯蒂安

最佳答案

您当然可以使用单例参数,除了不是将参数传递给构造函数,而是将其传递给 getInstance() 方法。对于真正的单例实现,您覆盖的构造函数当然需要是私有(private)的。我的示例是用 Java 编写的,但也适用于 C#。

例子:

Singleton s = Singleton.getInstance(42);

在单例代码中:

private Singleton() {

}

private Singleton(int num) {
//set num
}

public getInstance(int num) {
//singleton code (calls the private non-default constructor if an object
//does not already exist)
}

关于c# - 可以在 C# 中使用带有非默认构造函数的单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/885972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com