2

多くの Umbraco の例では、同じ種類の作業に対して 2 つの異なるアプローチが見られます。時々、人々はINodeを選択し、クエリし、返します。他の人はNodeですべてを行います。

どちらが好ましい働き方か誰か教えてもらえますか?

4

2 に答える 2

5

私は Umbraco に詳しくありませんが、答えは Umbraco に固有のものである必要はないと思います。

を返すINodeと、 から拡張された任意のクラスを (内部的に) 返すことができるという点で、将来の柔軟性が得られますINodeINodeのすべてのプロパティとメソッドが含まれている場合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 にキャストし直す必要があるからです (これは必ずしも大きな問題ではありませんが、通常はコードを抽象化されていない Node クラスに結合することになるため、最初に INode を返す目的を無効にします)。

于 2012-09-21T13:35:15.113 に答える