2011-05-21 66 views
2

可能重复:
How should the Form.Load event be used compared to its constructor method?C#良好作风

你好,

我的问题是关于C#良好的编程习惯。如果我使用各种形式创建应用程序,我会在Load方法中初始化与DB的连接,或者它应该在表单的基本构造器内部?另外,填充表单基本文本框和组合框的其他代码可以在Load方法内部,或者为此目的使用构造函数总是更好?

由于提前,

科内尔

回答

2

每当你想改变这种状况属于形成控制的状态,我建议您在窗体的Load事件这样做。

这样做在窗体的构造函数中容易出错。你有没有想过如果你尝试在构造函数中做,但在InitializeComponents()方法调用之前会发生什么?

关于ConnectionString,你可以在两者中做到这一点,因为这与Form没有直接关系。

你也可以看看一些开源项目的代码,看看他们是如何做到这一点没有关于使用Form :)

+0

谢谢,所以我会恢复为静态信息可以去构造函数和dinamically处理的信息将在一个更好的地方在Load事件。 – Kornel 2011-05-21 21:05:26

0

我投在构造连接,并形成Load方法填写!

我觉得还有没有很大的区别......它取决于应用程序的实现!例如,您可以从基本表单继承所有表单,并在其中放置连接字符串检索逻辑。

如果你想深入一点,我建议你看看依赖注入(搜索windsor castle,spring.net,ninject ...)来在表单类中注入数据库访问类!

2

网站上的音符相关的ConnectionString或一些其他的东西..什么也不做,直接在构造函数或表单加载中。

创建一个init方法或者你从适当的方法(构造函数,load)中调用的东西。这使得重构和单元测试更容易。而且代码通常更易于阅读。

+0

谢谢,我同意可读性问题,但如果您的代码增长过多,调用会影响性能。现在我正在按照你的建议进行,因为我开始这样做,方法调用。 – Kornel 2011-05-21 21:11:54

1

肯定会以Load的形式做更好的事情,因为这种方式只会在需要时才会发生。但也同意使用从表单加载事件处理程序调用的init方法的建议。