3
我剛剛遇到了「用戶定義的轉換或從一個接口不允許」的問題在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
}
任何人都知道我可以在語言的限制範圍內達到相同的句法的結果嗎?
我同意,我不喜歡你的接口使用 - 它不是真正的意圖 – 2008-11-21 15:00:28