【发布时间】:2008-11-21 14:49:47
【问题描述】:
我刚刚在 C# 中遇到了“不允许用户定义的与接口之间的转换”问题。我试图做的是创建一个通用的 Graph 类,它可以根据支持的接口以几种不同的方式进行迭代。所以:
public class Graph<T> : IBreadthFirstSearchTree<T>, IDepthFirstSearchTree<T>
{
// unnecessary details
public static explicit operator IBreadthFirstSearchTree<T>(Graph<T> g)
{
g.enumerator = new GraphEnumerator<T>(g, SortStrategy.BreadthFirst);
return g as IBreadthFirstSearchTree<T>;
}
public static explicit operator IDepthFirstSearchTree<T>(Graph<T> g)
{
g.enumerator = new GraphEnumerator<T>(g, SortStrategy.DepthFirst);
return g as IDepthFirstSearchTree<T>;
}
}
用于此用途:
foreach (GraphNode<T> gn in myGraph as IDepthFirstSearchTree)
{
// do stuff with gn
}
有谁知道我怎样才能在语言的限制下获得相同的句法结果?
【问题讨论】:
标签: c#