如果這是您想要或需要採取的方法,您可以在業務對象內創建sql對象私有類。
public class BusinessObject
{
private class SqlObject { }
}
此外,通過使用部分類,如果需要,可以將它分成單獨的文件。
//in one file
public partial class BusinessObject
{
//business object implementation
}
//in another file
public partial class BusinessObject
{
private class SqlObject { }
}
Joel使得一個好點在下面留言「中的SQLObject仍然可以從一個共同的類型繼承,對物像的連接信息可以通過這些共享‘內部’班」。這是絕對正確的,並且可能非常有益。
爲了響應您的編輯,單元測試只能測試公共類和函數(不使用測試中的反射)。我能想到的唯一的選擇會做到這一點:
- 使每個業務/ SQL對象對
- 改變
private class SqlObject
到internal class SqlObject
- 然後用
[InternalsVisibleTo("UnitTestsAssembly")]
該項目
一個組件
另外,在這一點上,你不必將sql對象保持爲嵌套類。一般來說,我認爲這可能會增加更多的複雜性,但我完全理解每種情況都是不同的,如果您的要求/期望將您推向了這一層,我希望您能順利。就我個人而言,我認爲我會將SqlObjects公開(或者內部可見內部用於單元測試),並接受這一事實,即這意味着sql類會暴露給所有業務類。
另外:SqlObject仍然可以繼承一個通用類型,因爲連接信息可以通過這些「內部」類共享。 – 2009-09-15 14:19:07
謝謝。我已經使用部分類來生成代碼。我正在分離依賴注入的SQL。您的方法只需要對我的模板進行很少的更改! – adam0101 2009-09-15 16:18:24