在擴展方法中,如何根據實現類創建對象。所以在下面的代碼中,我想添加一個「AddRelationship」擴展方法,但是我不確定在擴展方法中我可以如何創建一個Relationship對象?即不希望扳平擴展方法這個特定的實現關係在擴展方法中如何基於實現類創建對象
public static class TopologyExtns
{
public static void AddNode<T>(this ITopology<T> topIf, INode<T> node)
{
topIf.Nodes.Add(node.Key, node);
}
public static INode<T> FindNode<T>(this ITopology<T> topIf, T searchKey)
{
return topIf.Nodes[searchKey];
}
public static bool AddRelationship<T>(this ITopology<T> topIf, INode<T> parentNode, INode<T> childNode)
{
var rel = new RelationshipImp(); // ** How do I create an object from teh implementation
// Add nodes to Relationship
// Add relationships to Nodes
}
}
public interface ITopology<T>
{
//List<INode> Nodes { get; set; }
Dictionary<T, INode<T> > Nodes { get; set; }
}
public interface INode<T>
{
// Properties
List<IRelationship<T>> Relationships { get; set; }
T Key { get; }
}
public interface IRelationship<T>
{
// Parameters
INode<T> Parent { get; set; }
INode<T> Child { get; set; }
}
namespace TopologyLibrary_Client
{
class RelationshipsImp : IRelationship<string>
{
public INode<string> Parent { get; set; }
public INode<string> Child { get; set; }
}
}
public class TopologyImp<T> : ITopology<T>
{
public Dictionary<T, INode<T>> Nodes { get; set; }
public TopologyImp()
{
Nodes = new Dictionary<T, INode<T>>();
}
}
感謝
+1 - 這是由最簡單的方法遠。 – 2010-05-10 07:33:11
當我嘗試這個VS試圖告訴我,當我從客戶端代碼調用這個時,應該有AddRelationship方法名稱後面的<>。 – Greg 2010-05-10 10:28:20
你可能會給出一個從客戶端使用這種方法的例子 – Greg 2010-05-10 10:59:25