相关疑难解决方法(0)

需要匹配C#.cs文件名和类名吗?

在Java中,文件名必须是该java文件中定义的公共类名.C#有类似的要求吗?我可以在A.cs文件中定义一个公共B类吗?谢谢,

c# filenames classname

19
推荐指数
2
解决办法
1万
查看次数

C#中的部分类

在webforms/winforms生成的代码场景之外是否有很好的使用部分类?或者这个功能基本上是支持吗?

c# partial-classes

14
推荐指数
5
解决办法
5296
查看次数

.NET部分类与继承

好的,所以我们内部有一个实用工具,可以从我们的数据库表和视图中生成业务模型类,类似于(但不完全像)ORM.在维护它时,我发现模式中的数据可能不会发生很大的变化.但是,功能可能会.我们可能希望在未来添加其他功能.我们可能想要生成一些功能,我们可能想要扩展它.

我们正在构建的类将驻留在类库中,供其他库和应用程序使用.那里没什么大惊喜.但这里的难点是如何设计生成的类,以便在重新生成类时尽可能少地破坏代码.例如,如果代码已添加到属性(表示数据库表中的列),我们不希望丢失它.

因此,有两种方法可以想到:

经典继承,整个过程在一个"单片"类中完成,消费者可以自由地覆盖基础实现.然而,这有时会变得棘手,并经常引入铸造头痛.此外,如果派生类不小心并忘记调用基类功能,事情很快就会出错.

部分课程.在此方案中,我们将业务对象分成不同的部分:属性(映射到列)和行为.行为甚至可以进一步细分为生成的行为和自定义行为.正如您所看到的,这种方法的问题在于其固有的复杂性.此外,还有命名问题.

以下是我的问题:当你处理这样的场景时(如果有的话),或者如果你遇到这样的场景,你会考虑哪些解决方案,为什么?

.net partial-classes

7
推荐指数
1
解决办法
4820
查看次数

将测试类拆分为部分类?

我正在寻找一种在 .NET 项目中组织单元测试的好方法。现在,我TestClass每个应用程序类都有一个,每种方法都有多个测试。尽管我习惯按其测试的应用程序类方法对TestCategory每个方法进行分类TestMethod,但查找我的测试方法变得很笨拙。

我正在考虑将我的测试类拆分为部分类 - 每个应用程序类方法一个部分类。这意味着我可以TestMethod在每个方法中拥有多个合二为一的专用文件,而无需在一个大文件中寻找它们。

这种方法有什么陷阱吗?在 .NET 和 Visual Studio 中是否有更好的方法来处理大型测试类?

编辑:我正在使用 IoC(我们在测试之外使用 Castle.Windsor 进行 DI),并且我们使用 Moq 进行模拟功能。测试用 初始化TestInitialize

.net c# visual-studio

5
推荐指数
1
解决办法
6647
查看次数

不能抽象替换部分?

到目前为止,我看到的部分类的最大论点是自动生成的代码.

从Java的角度来说,我不明白为什么这不能简单地使用抽象类完成,不能自动生成的代码仅仅是一个抽象类protected abstract,它预计用户覆盖的方法呢?

除了自动生成的代码案例之外,我看到的每一个案例都非常罕见(编码器只是partial用作黑客),或者它也可以使用abstract已经存在的其他概念来解决.

c# abstract-class partial-classes

4
推荐指数
1
解决办法
83
查看次数

c#在几个*.cs fies中拆分表单代码

我有一个包含许多标签的表单.

为了没有一个巨大的Form1.cs文件,我想在几个Form1_1.cs,Form1_2.cs等文件中拆分方法.

我找不到正确的方法.我可以在几个文件中重复相同的命名空间和表单吗?我是否需要重复所有compliler指令,如"使用"或仅重复我将在该部分使用的指令?

例:

using System.Data.OleDb;

namespace Mine
{
    public partial class Form1 : Form
    {
...
Run Code Online (Sandbox Code Playgroud)

我们非常欢迎任何帮助或建议.

先感谢您.大卫

c# split

2
推荐指数
1
解决办法
1535
查看次数

如何从大视图模型中分离命令

我的viewmodel包含很多命令,它使我的viewmodel非常大.我想从viewmodel中分离出我的命令.目前,我的解决方案是为每个命令创建一个类,如下所示,

 public class TestCommand : CommandBase
{
    private MainViewModel vm;

    public TestCommand(MainViewModel vm)
    {
        this.vm = vm;
    }

    public override bool CanExecute(object parameter)
    {
        return true;
    }

    public override void ExecuteCommand(object parameter)
    {
        vm.logger.log(...);
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我需要在ViewModel中使用某些方法或属性,因此我必须将viewmodel作为参数传递给命令.对于这个解决方案,有两个缺点:1.项目中有很多命令文件,如果一个视图中命令的平均计数为15,则10个视图将在项目中有150个命令文件; 2.将ViewModel作为参数传递给命令需要一些属于私有的属性或方法必须更改为public; 将viewmodel传递给命令也很奇怪.

有没有其他解决方案来分离命令?

c# architecture wpf mvvm

1
推荐指数
1
解决办法
958
查看次数