我有一个边缘界面:
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; }
来做,但是我无法在界面中定义它。
那么有没有办法将singleton工厂作为类型参数传递,并为实现提供实例化它的方法?
答案 0 :(得分:3)
您可以简单地将工厂传递给实现接口的类:
public interface IEdge<TPoint>...
class MyEdge : IEdge<MyPoint>
{
IEdgeFactory<MyPoint> factory;
public MyEdge(IEdgeFactory<MyPoint> factory)
{
this.factory = factory;
}
}