在许多Umbraco示例中,我看到了相同类型工作的两种不同方法。有时人们会选择,查询并返回 INode 。其他人通过节点完成所有工作。
谁能告诉我哪种工作方式适合?
答案 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类。)