1

我有一个边缘界面:

public interface IEdge<TPoint, TFactory>
    where TPoint : IPoint
    where TFactory : IEdgeFactory<TPoint>
{
    TPoint Begin { get; }
    TPoint End { get; }
    void Divide();
}

边缘可以划分为产生嵌套边缘的边缘。使用工厂模式创建新边:

public interface IEdgeFactory<TPoint>
    where TPoint : IPoint
{
    IEdge<TPoint> Create(TPoint begin, TPoint end)
}

我希望能够在我的IEdge实现中实例化一个工厂。通常我会使用 ie 来做public static IEdgeFactory<TPoint> Instance { get; },但我不能在界面中定义它。

那么有没有办法将单例工厂作为类型参数传递并为实现提供一种实例化它的方法?

4

1 回答 1

3

您可以简单地将工厂传递给实现接口的类:

public interface IEdge<TPoint>...

class MyEdge : IEdge<MyPoint>
{
   IEdgeFactory<MyPoint> factory;
   public MyEdge(IEdgeFactory<MyPoint> factory)
   {
      this.factory = factory;
   }
}
于 2012-05-02T16:44:26.660 回答