0

私が取り組んでいる .NET COM ラッパー プロジェクトの適切な API レイアウトを決定しようとしている現在、岩と困難な場所の間で立ち往生しています。これは主に設計上の問題であり、何がうまく機能するかです。

だから私はこの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 オブジェクトに戻るものを取得します。

これらのパターンのいずれかが、この状況で有効だと思いますか?

2 つの異なるポイント オブジェクトがある場合、ユーザーを混乱させる可能性があるのではないかと心配していますが、やはりビルダー パターンはそれほどフレンドリーではありません。

もちろん、ポイント オブジェクトは私が作成しなければならない最も単純なオブジェクトですが、もう少し複雑なオブジェクトは他にもたくさんあります。

ありがとう。

4

1 に答える 1