DataLayer에 모든 데이터 액세스 항목이있는 특정 클래스가있는 계층화 된 응용 프로그램을 고려하면 비즈니스 계층에는 생성자에서 데이터 개체를 가져올 수있는 클래스가 있고 다른 과부하도 있습니다. 예 :C# .NET 생성자 오버로드 참조 문제
namespace Datalayer
{
public class dataObject
{
// all the class here
}
}
namespace BusinessLayer
{
public class busObject
{
busObject(){}
busObject(Datalayer.dataObject parm) {/*do something with parm*/}
busObject(int objectID) {/*go get the dataObject with the ID*/}
}
}
위의 레이어 (UI 레이어 일 가능성이 있음)는이 모델의 데이터 레이어에 대한 참조가 필요하지 않습니다. 그러나 이러한 방식으로 비즈니스 계층에 ctors를 설정해야합니다. 왜 누군가가 설명 할 수 있습니까?
나는이 방법을 선호하지만, UI 레이어에서 데이터 계층 참조를 원하지 않습니다. 지금까지 그것을 해결하기 위해 나는 지난 ctor에 있음을 제거하고 인스턴스화 한 후 객체 설정하는 등의 방법 추가 한 :
Select(int objectID) {/*go get the dataObject with the ID*/}
가 어떤 식 으로든 그 참조를 필요로하지 않고 위와 같이 내 생성자를 그대로 둘 수도를?
셀던
실제로 비즈니스 계층에서 데이터 계층을 상속하는 경우 동일한 문제가 발생합니다. 'DataLayer.dataObject'형식이 참조되지 않은 어셈블리에 정의되어 있습니다. 'DataLayer, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'어셈블리에 대한 참조를 추가해야합니다. 탑 레이어에게 데이터 플레이어에 대한 참조가 없습니까? –
@ sheheldon- 지금 너를 따라갈거야. 네가 묻고있는 부분을 잘못 이해했다. 이제 코드를 살펴 보았습니다. 데이터 레이어 객체에 대한 인터페이스를 사용하고 있습니다. 에피카가 제안한 것과 비슷합니다. 그런 다음 해당 인터페이스를 자체 dll에 넣습니다 (예 : 네임 스페이스 DataLayer.Interfaces.dll). 내 대답을 적절하게 편집하겠습니다. –