繁体   English   中英

如何将singleton作为泛型类型参数传递?

[英]How to pass singleton as generic type parameter?

我有一个边缘界面:

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; } public static IEdgeFactory<TPoint> Instance { get; } ,但我不能在接口定义这个。

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

您只需将工厂传递给实现该接口的类:

public interface IEdge<TPoint>...

class MyEdge : IEdge<MyPoint>
{
   IEdgeFactory<MyPoint> factory;
   public MyEdge(IEdgeFactory<MyPoint> factory)
   {
      this.factory = factory;
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM