在许多 Umbraco 示例中,我看到了针对相同类型工作的两种不同方法。有时人们选择、查询并返回INode。其他人用Node做所有事情。
谁能告诉我首选的工作方式是什么?
我不熟悉 Umbraco,但我认为答案不必针对它。
如果您 return 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
是一个糟糕的选择(因为它是不可变的)。
就像马修说的,这取决于你想要达到的目标。
但是,如果您是初学者并且不知道自己在做什么,我建议您返回 Node,因为否则在某些时候您可能不得不将您的 INode 转换回 Node(这不一定是一个大问题,但通常会首先破坏返回 INode 的目的,因为您会将代码耦合到非抽象 Node 类)。