【发布时间】:2014-03-16 09:20:06
【问题描述】:
当我编写一个 winforms 应用程序时,我倾向于为每个表单创建一个 Implementation.cs 文件。
假设我有 Form1.cs,我将创建一个名为 Form1.Implementation.cs 的新文件,以 partial class Form1 开头。
Form1.cs 只包含所有的事件回调方法(设计者所做的),其他的都交给 Form1.Implementation.cs。它帮助我编写更具可读性的代码。
我希望 Form1.Implementation.cs 成为一个“子文件”,就像 Form1.Designer.cs 一样,所以我编辑了 .csproj 文件。
<Compile Include="Form1.Implementation.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
然而,在重新加载之后,Visual Studio 会自动在 DependentUpon 元素之后添加 <SubType>Form</SubType>。双击 Form1.Implementation.cs 不会显示代码,而是显示具有另一个初始空表单的设计器。
好像
“类Form1,其中ISA Form,是(?)多种形式。”
我尝试将adding DesignerCategory attribute 用于类Form1,但它也会影响Form1.cs。
嗯,按“Shift-F7”或“Ctrl-Shift-0”并不是什么大问题。 我想知道...
- 这是 Visual Studio 的故障,
- 次要(?)形式确实以某种方式存在,
- 有一天它会炸毁我的 winforms 项目
【问题讨论】:
-
您应该考虑采用更“架构化”的方法来处理您的代码。也许 MVP 会适合.. 你的 Form 只是变成一个愚蠢的视图,而实际的代码位于 Presenters 中。
-
该属性适用于
Form1类型,而不适用于其中一个源文件。实际上,部分类只存在于代码中,在编译时会被合并。
标签: c# winforms visual-studio partial-classes csproj