2

在许多 Umbraco 示例中,我看到了针对相同类型工作的两种不同方法。有时人们选择、查询并返回INode。其他人用Node做所有事情。

谁能告诉我首选的工作方式是什么?

4

2 回答 2

5

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

如果您 return INode,它将为您提供将来的灵活性,因为您可以(内部)返回从 扩展的任何类INode。如果INode包含 的所有属性和方法Node,那么这样做不会丢失任何功能。

举个例子,使用IEnumerablevs的机会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是一个糟糕的选择(因为它是不可变的)。

于 2012-09-21T13:29:51.883 回答
0

就像马修说的,这取决于你想要达到的目标。

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

于 2012-09-21T13:35:15.113 回答