使用C#的扩展方法,如何在ExtensionMethods类中包含一个AddNode方法(见下文)以供重用,而不必将它放在实现类本身(我无法重用它)。 AddNode扩展方法需要能够访问实现中的List参数。
我已经尝试了以下但是我发现在AddNode扩展方法中它无法“看到”节点列表,即使在ITopology界面中指定了此列表,并且扩展方法正在应用于此ITopology界面。
某些.net泛型集合类似乎能够捆绑他们的“添加”方法,所以我在某处采取了错误的方法吗?
public interface ITopology
{
List<INode> Nodes { get; set; }
}
public interface INode
{
List<INode> GetChildren(NodeDepthType nodeDepth);
}
public static class ExtensionMethods
{
public static bool AddNode(this ITopology topIf, INode node)
{
this.Nodes; // <== ** Can't resolve symbol Nodes **
return true;
}
}
namespace TopologyLibrary_Client
{
using Topology;
public class TopologyImp : ITopology
{
public List<INode> Nodes { get; set; }
}
}
答案 0 :(得分:2)
您可以访问topIf
,而不是this
:
public static bool AddNode(this ITopology topIf, INode node)
{
topIf.Nodes;
return true;
}
答案 1 :(得分:1)
使用以下内容替换AddNode中的代码:
public static bool AddNode(this ITopology topIf, INode node)
{
topIf.Nodes; // <== Note the use of topIf here.
return true;
}
您忘记使用参考topIf来实际访问Nodes属性。