gpt4 book ai didi

c# - 构造函数可以返回子类吗?

转载 作者:太空狗 更新时间:2023-10-29 17:44:03 25 4
gpt4 key购买 nike

给定以下客户端代码:

var obj = new Class1();

有没有办法修改 Class1 的构造函数,使其实际上返回一个子类(或其他一些替代实现)?

我希望 obj 根据某些条件获得两种不同实现中的一种。显然,我可以改为使用工厂或 DI 框架,但我想尽可能避免更改客户端代码。

我假设答案是否定的,但我想知道是否有一些聪明的方法可以实现这一点。

最佳答案

您可以用工厂方法替换构造函数,并根据参数返回您喜欢的任何内容:

public Class2 : Class1 {}

public static Class1 CreateClass1(bool returnDerivedClass)
{
if (returnDerivedClass)
{
return new Class2();
}
else
{
return new Class1();
}
}

关于c# - 构造函数可以返回子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352259/

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