In an extension method how do a create an object based on the implementation class
Posted
by Greg
on Stack Overflow
See other posts from Stack Overflow
or by Greg
Published on 2010-05-10T07:15:41Z
Indexed on
2010/05/10
7:24 UTC
Read the original article
Hit count: 302
Hi,
In an extension method how do a create an object based on the implementation class. So in the code below I wanted to add an "AddRelationship" extension method, however I'm not sure how within the extension method I can create an Relationship object? i.e. don't want to tie the extension method to this particular implementation of 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>>();
}
}
thanks
© Stack Overflow or respective owner