我应该在Umbraco中使用INode还是Node?

时间:2012-09-21 12:41:24

标签: c# asp.net umbraco

在许多Umbraco示例中,我看到了相同类型工作的两种不同方法。有时人们会选择,查询并返回 INode 。其他人通过节点完成所有工作。

谁能告诉我哪种工作方式适合?

2 个答案:

答案 0 :(得分:5)

我对Umbraco并不熟悉,但我不认为答案必须具体针对它。

如果您返回INode,它将来会给您灵活性,因为您可以返回(内部)从INode扩展的任何类。如果INode包含Node的所有属性和方法,则执行此操作不会丢失任何功能。

例如,有机会使用IEnumerable vs List

IEnumerable<int> x = MyClass.MyMethod();

以下MyMethod的定义在此类示例中都有效。

public static IEnumerable<int> MyMethod()
{
    return new List<int>() { 1, 2, 3 };
}

....

public static IEnumerable<int> MyMethod()
{
    return new int[] {1, 2, 3};
}

这使您可以更改MyMethod的实现,而无需修改每个调用者。

对于您的方法,您应该返回最简单的类型,该类型提供与其上下文相关的所有功能。假设您需要修改MyMethod返回的列表,那么返回IEnumerable是一个糟糕的选择(因为它是不可变的)。

答案 1 :(得分:0)

像马修说的那样,这取决于你想要实现的目标。

但是如果你是初学者并且不知道你在做什么,我建议你返回Node,否则在某些时候你可能不得不将你的INode转回节点(这不一定是一个大的节点)问题,但通常会首先失去返回INode的目的,因为您将代码耦合到非抽象的Node类。)