在扩展方法中,如何根据实现类创建对象。所以在下面的代码中,我想添加一个“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