gpt4 book ai didi

c# - 在构造函数中克隆类

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:12 25 4
gpt4 key购买 nike

我需要类似的东西

public class  object_t 
{

public object_t ( string config, object_t default_obj )
{
if( /*failed to initialize from config*/ )
{
this = default_obj; // need to copy default object into self
}
}
}

我知道这是不正确的。如何实现这个构造函数?

最佳答案

最常见的可能是使用静态工厂方法:

public class object_t 
{
public static object_t CreateObjectT(string config, object_t default_obj)
{
object_t theconfiguredobject = new object_t();

//try to configure it

if( /*failed to initialize from config*/ )
{
return default_obj.Clone();
}
else
{
return theconfiguredobject;
}
}
}

执行上述操作的更好方法是创建一个复制构造函数:

public object_t (object_t obj)
: this()
{
this.prop1 = obj.prop1;
this.prop2 = obj.prop2;
//...
}

以及尝试从配置字符串创建对象的方法:

private static bool TryCreateObjectT(string config, out object_t o)
{
//try to configure the object o
//if it succeeds, return true; else return false
}

然后让你的工厂方法首先调用 TryCreateObjectT,如果失败,复制构造函数:

public static object_t CreateObjectT(string config, object_t default_obj)
{
object_t o;
return TryCreateObjectT(config, out o) ? o : new object_t(default_obj);
}

关于c# - 在构造函数中克隆类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14063308/

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