我有一个相当冗长的构造函数,它执行各种初始化工作,因此我想将这些工作分解到一些函数中。这导致我怀疑我是否应该制作所述的函数实例或静态方法。我明白从构造函数调用虚函数的风险,但我也认为在未实例化的对象上调用实例方法是不对的。这当然是矛盾的。从C中的构造函数调用实例方法#
我会对这个问题的意见感兴趣。我还发现,通过使用静态方法返回初始化变量,我可以使成员目标是只读的。以下是我的场景的简单说明。
public class A
{
private readonly string _foo;
public A()
{
_foo = InitialiseFoo();
}
private static InitialiseFoo()
{
// Do stuff
return new string ("foo");
}
}
为什么你有一个冗长的构造函数?这不是构造函数应该如何。您应该使用方法来执行冗长的操作。当你尝试使用一些API并且这个API在其构造函数中执行数据库访问和东西并且可能抛出异常和东西时总是非常令人沮丧。做到这一点。这真的很烦人。构造函数应该很简单。 –
我完全同意你的看法,但我正在编写一个windows服务,它需要首先从配置文件中获取它的服务名称。你只能在它的构造函数中设置一个服务的名字,所以我有点困惑。 – user738134