我正在使用Linq to SQL,它生成部分类和部分方法。然后,通过在另一个分部类中手动实现自定义,扩展生成的代码。 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 Private Sub OnMyNewPropNameChanged()
,但我的部分方法版本仍然具有旧名称。实际上,我现在有一个永远不会被调用的孤立私有方法,这意味着我的代码在运行时被破坏了。你会如何测试这样的东西,甚至更好 - 有没有办法指定我的OnMyPropChanged()
版本是部分方法的实现,这样如果没有,我会得到编译时间的破坏在生成的代码中对应的部分?
答案 0 :(得分:2)
通过使用静态分析(代码分析),当代码包含从未访问或仅设置的任何内部(私有,自由,内部)成员时,您将收到警告/错误。 这可能有助于找到这样的星座。 (IIRC有关的错误代码是CA1811)
答案 1 :(得分:0)
在我看来,我认为你不能。
在更改设计器中属性的名称时,您将导致重新创建自动生成的代码。
最好的方法是在开始实现业务逻辑之前设计实体。在visual studio中创建单元测试,测试正在执行的部分实现。 visual studio中的单元测试甚至可以为您提供代码覆盖率统计信息。
希望这有帮助