Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何测试重命名的分部方法?_C#_Vb.net_Linq To Sql_Partial Classes - Fatal编程技术网

C# 如何测试重命名的分部方法?

C# 如何测试重命名的分部方法?,c#,vb.net,linq-to-sql,partial-classes,C#,Vb.net,Linq To Sql,Partial Classes,我正在使用LINQtoSQL,它生成分部类和分部方法。然后,通过在另一个分部类中手动实现自定义来扩展生成的代码。L2S提供的一个钩子是实现在属性更改时调用的部分方法的能力。例如,如果您有一个名为“MyProp”的属性,则可以实现如下所示的分部方法: ' Given to you in the generator Partial Private Sub OnMyPropChanged() End Sub ' Manually implemented in my custom class ' I

我正在使用LINQtoSQL,它生成分部类和分部方法。然后,通过在另一个分部类中手动实现自定义来扩展生成的代码。L2S提供的一个钩子是实现在属性更改时调用的部分方法的能力。例如,如果您有一个名为“MyProp”的属性,则可以实现如下所示的分部方法:

' Given to you in the generator
Partial Private Sub OnMyPropChanged()
End Sub

' Manually implemented in my custom class
' I cannot specify that this is an implementation of a Partial, even though it is...
Private Sub OnMyPropChanged()
   Console.WriteLine("My prop changed... do something here")
End Sub

我遇到的问题是“MyProp”的名称现在已更改为“MyNewPropName”,因此现在生成器中的partial在ynewPropNameChanged()上创建了
部分私有子对象,但我的partial方法版本仍然使用旧名称。实际上,我现在有一个从未被调用的孤立私有方法,这意味着我的代码在运行时被破坏。您将如何测试类似的内容,或者更好-是否有一种方法可以指定我的
OnMyPropChanged()
版本是一个分部方法的实现,这样,如果生成的代码中没有相应的分部,我将得到编译时中断?

在我看来,您不可能

在设计器中更改属性名称时,会导致重新创建自动生成的代码

最好的方法是在开始实现业务逻辑之前设计实体。在VisualStudio中创建单元测试,用于测试正在执行的部分实现。VisualStudio中的单元测试甚至会提供代码覆盖率统计信息

希望这有助于

通过使用静态分析(代码分析),当代码包含从未访问或仅设置过的任何内部(private、freid、internal)成员时,您将收到警告/错误。
这可能有助于找到这样的星座。(IIRC有关的错误代码是CA1811)

你说“最好的方法是在开始实现业务逻辑之前设计实体”,但说你会有一个完美的前期设计,或者说事情永远不会改变是不现实的。您还提到了单元测试,但能否详细说明如何测试是否调用了私有分部方法?这些方法旨在使您能够以某种方式更改状态或自定义业务对象。因此,在实现该方法时,您将知道调用该方法的效果或结果。在单元测试中,您将知道什么操作将触发可扩展性/部分方法,并且您知道您的方法将产生什么结果。测试结果我没想过用FxCop之类的东西来帮我检查。这很有效。谢谢