问题标签 [partial-classes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1777 浏览

c# - 使用部分类

在内存、性能等方面使用部分类是否有任何开销?

如果我们创建一个部分类,我们可以使用反射器识别该类是否是部分的

0 投票
5 回答
5749 浏览

.net - .NET 部分类与继承

好的,所以我们内部有一个实用程序,它可以从我们的数据库表和视图生成业务模型类,类似于(但不完全像)ORM。在维护它时,我想到模式中的数据不太可能发生很大变化。但是,该功能可能会。我们可能希望在以后添加其他功能。我们可能想要生成一些这样的功能,并且我们可能想要扩展它。

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

因此,有两种方法跃入脑海:

经典继承,整个事情在一个单一的“整体”类中完成,消费者可以自由地覆盖基本实现。但是,这有时会变得有点棘手,并且经常会引起铸造头痛。此外,如果派生类不小心并忘记调用基类功能,事情很快就会出错。

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

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

0 投票
8 回答
11845 浏览

c# - 与抽象类相比,使用部分类有什么好处?

我一直在阅读 Programming Microsoft® Visual C#® 2008: The Language 以更好地理解 C# 以及可以用它做什么。我遇到了我已经从 ASP.Net 的 Page 类中遇到的部分类。

对我来说,您似乎可以使用抽象类和覆盖类来完成部分类的工作。显然,一个团队将通过抽象方法控制接口,但无论如何你都会相互依赖。如果目标是协作,那么源代码控制和其他工具就不能解决这个问题。

我只是错过了部分课程的重点。也有人可以提供真实世界的使用。

0 投票
1 回答
1636 浏览

linq-to-sql - 实现 linqtosql 部分 DataContext 类 - 如何检查之前/之后的值

我正在尝试扩展 VS 设计器生成的 linqtosql 类,并且需要确定特定字段的值是否已更改。有没有办法让我访问表/实体的 DataContext Update 方法中字段的前后值?

这是我的代码:

我也愿意向 Activity 实体类添加一个属性以指示值是否已更改,但我也不知道如何判断该值是否已更改。我不能只使用 Activity 类的 OnAssignedToChanged 方法,因为它会在设置属性值时触发,而不必更改。我正在使用 ListView 和 LINQDataSource 控件进行更新,因此无论如何它都会被设置。

我还认为我可能能够使用 OnAssignedToChanging 方法,但 Activity 实例此时似乎没有当前值。以下代码不起作用,因为 this.AssignedTo 始终为空。

0 投票
4 回答
13416 浏览

c# - C# 部分类

如何在 C# 中的多个文件和不同命名空间中编写部分类?

0 投票
2 回答
4859 浏览

c# - 防止 DebuggerStepThroughAttribute 应用于我的非 xsd 生成的部分类?

我使用 xsd.exe 工具根据我的 xml 架构生成一个类。它使用 DebuggerStepThroughAttribute 创建了一个公共部分类。好吧,我为这个类创建了另一个分部类文件来编写我的自定义代码,并希望能够单步执行我编写的这段代码,但调试器似乎也在将分步属性应用于我的分部类。是否有一种简单的方法可以让我在每次重新生成部分类时无需手动删除属性即可进入我的代码?

0 投票
3 回答
1061 浏览

c# - 实体框架:自定义生成的数据对象异常

我正在尝试将属性添加到 Entity Framework 为我创建的生成数据类之一。我在另一个生成的类上做了完全相同的事情,没有问题,由于某种原因,它在这个类上不起作用。

两个生成的对象之间的唯一区别是一个只是一个直接的表映射(一个有效的),另一个继承自另一个对象(一个不工作的)。换句话说,一个表代表两个实体,并且基于一些标准,我将它抽象出来并创建了两个继承实体......

然后我在下面添加了该属性...

现在当 ReportPropertyChanged 被调用时,它会抛出这个异常:

System.ArgumentException:属性“SerialNumber”在实体对象上没有有效的实体映射。有关详细信息,请参阅实体框架文档。

我在另一个不会抛出的生成数据类中有相同的代码,唯一的区别是继承,这是怎么回事?

0 投票
3 回答
515 浏览

c# - 转换类可扩展性(扩展方法与部分类)

我正在为频率创建一个转换类,我希望我的团队能够在需要时添加额外的转换。

该类的源代码将不会包含在未来的项目中,因此我必须让该类成为部分类,或者额外的转换需要扩展。一个示例是添加到 GHz 的转换

进行此操作的最佳方法是什么?

更新:阅读 Randolpho 的回答后,我将采用扩展方法。随着时间的推移,扩展将被纳入基本代码,但我不想让其他团队成员等待更新的程序集,这让他们可以更快地进入下一个任务。

0 投票
3 回答
2703 浏览

validation - 将 DataAnnotations 添加到生成的部分类

我有一个 Subsonic3 Active Record 生成的部分用户类,我在一个单独的部分类中使用一些方法对其进行了扩展。

我想知道是否可以将数据注释添加到一个部分类的成员属性中,该部分类在另一个 Subsonic Generated 上声明,我试过了。

该示例给出“成员已定义”错误。

我想我前段时间可能已经看过一个例子,说明我正在尝试使用动态数据和 Linq2Sql 做什么。

0 投票
8 回答
71403 浏览

c# - C#:如何为部分类中的属性设置默认值?

我对 C# 很陌生,所以请多多包涵……

我正在实现一个部分类,并想添加两个属性,如下所示:

我想初始化两个数据成员:IsSomethingtoTrueSomeListto new List<string>()。通常我会在构造函数中执行它,但是因为它是一个部分类,我不想接触构造函数(我应该吗?)。

实现这一目标的最佳方法是什么?

谢谢

PS 我在 ASP.NET MVC 中工作,为某个模型添加功能,因此是部分类。