원하는 방식이거나 취할 필요가있는 방식 인 경우 비즈니스 개체 내에서 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의 여전히 일반적인 유형에서 상속 할 수 있습니다에 대한 연결 정보 같은 것들이 그에서 공유 할 수있다"내부 "클래스." 이것은 절대적으로 사실이며 잠재적으로 매우 유익합니다.
단위 테스트는 편집에 대한 응답으로 테스트에서 리플렉션을 사용하지 않고 공용 클래스와 함수 만 테스트 할 수 있습니다. 이런 짓을 했을까 내가 그 생각할 수있는 유일한 옵션은 다음과 같습니다
- 이 (가)
private class SqlObject
internal class SqlObject
에
- 다음 프로젝트
에 대한
[InternalsVisibleTo("UnitTestsAssembly")]
사용하여 변화하는 비즈니스/SQL 오브젝트 쌍
당 하나의 어셈블리를 만들 또한이 시점에서 sql 개체를 중첩 클래스로 유지할 필요가 없습니다. 일반적으로 이것은 이것이 추가하는 가치보다 더 복잡 할 가능성이 높다고 생각하지만, 모든 상황이 다르다는 것을 완전히 이해하고 있으며, 귀하의 요구 사항/기대가 당신에게이 사실을 알리는 것이라면, 나는 당신이 잘되기를 바랍니다. 개인적으로, SqlObjects를 공개 (또는 내부 테스트를 위해 내부가 보이는 내부)로 만들고 SQL 클래스가 모든 비즈니스 클래스에 노출된다는 사실을 받아 들일 것입니다.
또한 SqlObject는 연결 정보가 "내부"클래스에서 공유 될 수 있도록 공용 유형에서 상속받을 수 있습니다. –
감사합니다. 이미 코드 생성을 위해 부분 클래스를 사용하고 있습니다. 나는 Dependency Injection을 위해 SQL을 분리 할 것이다. 귀하의 접근 방식은 내 템플릿을 거의 변경하지 않아도됩니다! – adam0101