两个部分类分成两个文件,一个是另一个的子项并且可以扩展

问题描述 投票:0回答:3

我添加了两个同名的部分类:

public partial class SomePartial
{
}

现在我有两个单独的文件。

我想让它们在项目中显示为单个项目,可以像在 WebForms 项目中一样展开,其中您有

Form.cs
并且有
Form.Designer.cs

c# visual-studio-2010 partial-classes
3个回答
7
投票

您可以通过手动编辑 .csproj 文件来完成此操作。

右键单击该项目并选择“卸载项目”,然后再次右键单击该项目并选择“编辑.csproj”。

这是一个 .xml 文件,描述您的项目及其依赖项。您需要找到描述您的部分类的文件的条目,例如

<ItemGroup>
    <Compile Include="MyPartialClass.cs" />
    <Compile Include="MyPartialClass.Extension.cs" />
</ItemGroup>

现在您可以通过添加

DependendUpon
子标签将一个项目设置为另一个项目的子项目:

<ItemGroup>
    <Compile Include="MyPartialClass.cs" />
    <Compile Include="MyPartialClass.Extension.cs">
        <DependentUpon>MyPartialClass.cs</DependentUpon>
    </Compile>
</ItemGroup>

保存文件,然后重新加载项目。


0
投票

恕我直言,在同一个文件中拥有部分类没有多大意义。部分类的主要目标是允许多个人使用同一类,如果有人从您的代码存储库中检出此文件,则此功能将消失。 另一个目标是使手动代码远离自动生成的代码,这样在重新生成时它就不会丢失。 也就是说,您可以使用代码区域来实现您想要的。

#region Partial 1
// Code here
#endregion 

#region Partial 2
// Code here
#endregion

0
投票

dotnet core
中,将
NETSDK1022
项目添加到
Compile
时,您可能会收到错误
csproj

要解决此问题,例如必须先删除源文件,然后再添加。

<ItemGroup>
    <Compile Remove="MyPartialClass.cs" />
    <Compile Remove="MyPartialClass.Extension.cs"/>

    <Compile Include="MyPartialClass.cs" />
    <Compile Include="MyPartialClass.Extension.cs">
        <DependentUpon>MyPartialClass.cs</DependentUpon>
    </Compile>
</ItemGroup>

错误

NETSDK1022
显示,因为在
dotnet core
中,项目目录中的所有源文件都包含在默认情况下进行编译,然后尝试添加
Compile
项会导致源文件重复。但在
.Net Framework
中并没有抛出错误,因为所有源文件都必须显式列出/包含在
csproj
中。

© www.soinside.com 2019 - 2024. All rights reserved.