在許多Umbraco的例子中,我看到兩種不同的方法適用於相同類型的工作。有時候人們選擇,查詢並返回INode。其他人一切都在節點。我應該使用Umbraco中的INode或節點嗎?
任何人都可以告訴我哪個是首選的工作方式嗎?
在許多Umbraco的例子中,我看到兩種不同的方法適用於相同類型的工作。有時候人們選擇,查詢並返回INode。其他人一切都在節點。我應該使用Umbraco中的INode或節點嗎?
任何人都可以告訴我哪個是首選的工作方式嗎?
我不熟悉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
是一個不好的選擇(因爲它是不可變的)。
就像馬修說的那樣,這取決於你想要達到的目標。
但是,如果您是初學者並且不知道您在做什麼,我建議您返回Node,否則在某些時候您可能必須將INode返回到Node(這不一定是個大問題,但是通常會失敗首先返回INode的目的,因爲您將代碼耦合到非抽象的Node類)。