2012-09-21 27 views
2

在許多Umbraco的例子中,我看到兩種不同的方法適用於相同類型的工作。有時候人們選擇,查詢並返回INode。其他人一切都在節點我應該使用Umbraco中的INode或節點嗎?

任何人都可以告訴我哪個是首選的工作方式嗎?

回答

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是一個不好的選擇(因爲它是不可變的)。

0

就像馬修說的那樣,這取決於你想要達到的目標。

但是,如果您是初學者並且不知道您在做什麼,我建議您返回Node,否則在某些時候您可能必須將INode返回到Node(這不一定是個大問題,但是通常會失敗首先返回INode的目的,因爲您將代碼耦合到非抽象的Node類)。

相關問題