问题标签 [partial-methods]
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.
c# - 如何在 EntityDataModel 的部分类中修改对象的值
我有一个从我的数据库(Visual Studio 2010、asp.net 4.0、c#)生成的 EntityDataModel。我正在尝试使用与实体类关联的部分类来执行一些业务逻辑(在这种情况下,检查电话号码字段并删除空格)。
如果我使用类似的东西:
然后我最终得到一个无限循环(因为我的 FormatPhoneNumber 方法修改了 MobilePHoneNo 再次引发事件等),然后我得到......堆栈溢出!
当我尝试改用 OnMobilePhoneNoChanging 并修改 MobilePHoneNo 属性(或value
值)时,该值未正确保存。
我该怎么办 ?
c# - 部分方法实现给出错误“没有找到实现部分方法声明的定义声明......”
我正在编写一个需要设置表单的 Winforms 项目。对于该设置表单,我想要两种模式,基本模式和高级模式。我编写了代码以使其在这两者之间进行更改,并且为了节省时间,我希望 InitializeComponent() 方法只调用与调用相同的方法以切换到基本模式。我创建了一个这样的部分方法:
在我的程序文件中的部分类中(不是 Windows 窗体设计器生成的那个),并将 Window 窗体设计器生成的代码中的一个更改为:
我认为这是签名的正确语法,实现定义如上。
但是,当我尝试构建代码时,它告诉我“没有找到用于实现部分方法 InitializeComponent() 的声明的定义声明”,并指向我拥有的第一个代码示例。
我检查了名称,甚至复制并粘贴了相应的名称以确保它们相同,但我仍然无法运行它。这是我的代码中唯一阻止我构建和运行的错误。有任何想法吗?
asp.net - 如何删除 ASP.NET Designer.cs 文件?
在没有 .designer.cs 文件之前,我从事过 VS 项目。
现在我在另一台计算机上开始了一个新项目,我无法摆脱 Designer.cs 文件。这真的让我很烦。我真的需要它,我该如何删除它?一定有某个地方的设置。
c# - 用作委托参数时,未实现的部分方法是否会被 null 替换?
所以我有两种不同的方法。
一种是正常的方法
另一个是部分但未实现的
当我这样调用我的第一个方法时
会发生什么,委托参数是否为空,我的整个方法调用会被删除吗?
c# - 使用反射检查是否已实现部分方法
背景
我正在使用 Linq to SQL,因此生成的 DBML 文件包含自动生成的类。生成过程的一部分为某些操作创建部分方法,在我的例子中,我感兴趣的两种方法与表记录的插入和更新有关。这些部分方法是根据在 DBML 设计器中创建的每个表生成的,例如:
现在,我的应用程序设计的一部分要求始终为每个表实现这两个部分方法。(它们本质上用于为正在插入/更新的记录添加时间戳)。
要求
我有一个单元测试项目,虽然这可能不是常见的做法,但我想包括一些测试,以确保某些事情已经正确实施。在这种情况下,我想确保开发人员记得实现上面提到的部分方法(我不关心实际的实现,只关心它们已经实现)。
问题
我需要做的是使用反射来检查每个部分方法是否已实现,但我无法确定如何确定。
尝试的努力
到目前为止,我已经设法获得了数据上下文中包含的方法列表,并且能够将其与每个表的预期方法进行比较。问题是我无法找到一种方法来确定给定的部分方法是否实际上具有实现:
c# - 为什么部分方法支持 ref 但不支持 out 参数
我正在阅读部分方法,因为它们将在 C#-6 / Visual Studio 2013 update 2 中与Windows Universal Projects结合使用变得更加重要。在阅读文档时,我读到了对部分方法签名的这个奇怪的限制:
部分方法可以有 ref 但不能有 out 参数。
我不明白这个限制的原因。既然partial方法基本上是一个普通的方法,签名和实现在不同的文件中,那有什么技术原因不支持out参数呢?或任何其他导致此限制的原因。特别是因为它们确实支持非常相似的 ref 参数。
c# - Orchard 自定义模块中的部分方法
我们开发了一个 DSL 来帮助编写 Orchard 自定义模块。在生成的驱动程序的 Editor 方法中,我们使用部分方法来允许程序员在需要时覆盖生成的代码行为。
但是,在运行时,我们会收到一个未实现部分方法的异常。
根据 C# 规范,它不一定是这样,所以我想知道动态编译(或类似的)是否妨碍了这里。请注意,代码是在运行和调试之前手动编译的,因此不应该有任何代码需要在运行时编译。
有问题的位如下:
在另一个文件的部分类中添加“CustomEditorGet”方法实现,即使为空,一切都很好。只添加没有部分方法 impl 的部分类并不能解决它。
有什么想法吗?
c# - LINQ to SQL Partial 方法不会覆盖自动生成的方法
我希望创建一个部分方法来覆盖 linq to sql 中自动生成的方法。根据我的阅读,我假设我的方法应该用于自动生成的方法。如果是这种情况,为什么我会收到此错误?“类型 X 已经定义了一个名为 ZZZ 的成员,具有相同的参数类型”
当我运行程序时,使用自动生成的方法而不是我的方法。
谢谢,蒂姆
c# - 在调用另一个方法时调用一个方法
这可能是一个愚蠢的问题,但在这里。
我有以下问题:
MyBaseClass有一个方法,在从它继承的类中调用Something()方法时需要调用该方法。
这背后的想法是,当出于许多无聊的公司原因调用此方法时,我需要记录。我宁愿有一个在调用方法时自动审核的基类,而不是让开发人员自己调用该方法。
这样的事情可以实现吗?如果是这样,怎么做?
我考虑过部分方法,但这需要具有相同名称的类,这在这种情况下是不可能的。
c# - 尽管有其他限制,为什么可以将部分方法分配给委托?
我知道标题可能不完全清楚,但我不想让它太长。
在考虑对部分方法施加的限制时,有一件事让我感到困惑。在我看来,规则是不一致的。你可能知道:
部分方法的返回类型必须始终为 void,并且它们不能有任何用 out 修饰符标记的参数。这些限制是存在的,因为在运行时,该方法可能不存在,因此您无法将变量初始化为该方法可能返回的值,因为该方法可能不存在。同样,您不能有 out 参数,因为该方法必须对其进行初始化,并且该方法可能不存在。[1]
这对我来说听起来很明智。但同时:
如果没有实现分部方法声明,那么您不能有任何代码尝试创建引用分部方法的委托。同样,原因是该方法在运行时不存在。[1]
起初,所有这些规则似乎都遵循相同的编译器逻辑。不过还是有区别的。如第二个引用所述,编译器仅在部分方法没有方法实现时才会发出错误。为什么它不能在其他情况下在编译时检查实现?这将在使用部分方法时提供更大的灵活性,并且所有规则背后的逻辑都是相同的。
恐怕我能得到的唯一答案是“因为它是这样实现的”,但也许还有更多的东西?
[1] CLR 通过 C#,第四版