현재 작업하고있는 .NET COM 래퍼 프로젝트의 좋은 API 레이아웃을 결정하기 위해 바위와 어려운 곳 사이에 갇혀 있습니다. 이것은 주로 디자인 문제이며 더 잘 작동합니다.래퍼 라이브러리 - POCO가 포함 된 작성기와 팩토리
그래서 나는이 COM 포인트 객체가 있습니다
public class COMPoint
{
internal COMPoint(MyComObject comobject) {}
public SomeCollection Nodes {get; set;}
}
내가 문제를 결정하는 데 문제가 지금 어디 내 COM 개체에 점 개체를 만들기 위해 나는 몇 가지 문자열 명령을 호출해야하고, 이것은이다 이것을 가리 키기 위해.
이제 속성을 가진 POCO를 사용하여 다음과 같은 일종의 팩토리 메서드로 전달할 생각을했습니다.
public class Point
{
public SomeCollection Nodes {get;set;}
}
public class GeometryFactory
{
public GeometryFactory(MyComObject comobject) {}
public CreateCOMPointFrom(Point point)
{
// Do COM work here and return new COMPoint.
}
}
또는 빌더 패턴을 사용하여, 같은 :
public class COMPoint
{
internal COMPoint(MyComObject comobject) {}
public SomeCollection Nodes {get; set;}
public class Builder
{
public Builder(MyComObject comobject) {}
public SomeCollection Nodes {get; set;}
public COMPoint Create()
{
// Do COM work here and return new COMPoint.
}
}
}
또는이 둘의 조합 :
public class COMPoint
{
internal COMPoint(MyComObject comobject) {}
public SomeCollection Nodes {get; set;}
public class Builder
{
public Builder(MyComObject comobject) {}
public SomeCollection Nodes {get; set;}
public COMPoint Create()
{
// Do COM work here and return new COMPoint.
}
public COMPoint CreateFrom(Point point)
{
// Set builder properties and call.
this.Create();
}
}
}
POCO를 사용하여 뒤에 아이디어는 사람들이 지점을 만들 수 있도록했다
좋은 오래 된 개체를 사용 하여 개체
Point point = new Point()
point.Nodes <- Set nodes
을 코드 주위로 전달한 다음이를 구성하고 COM 개체로 돌아가는 코드를 다시 가져옵니다.
이러한 패턴 중 하나라도이 상황에서 어떤 신용도 있다고 생각하십니까?
두 개의 서로 다른 점 객체가 있으면 사용자를 혼란스럽게 할 수 있지만 다시 빌더 패턴이 무엇을해야하는지 걱정하지 않습니다.
물론 포인트 객체는 내가 만들어야하는 가장 간단한 객체입니다. 더 복잡한 객체가 많이 있습니다.
감사합니다.