Наиболее распространенным является, вероятно, использовать статический метод фабрики:
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);
}
Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –