2010-07-23 44 views
1

鑑於其接受與下列接口參數的函數:如何獲取索引器類對象的大小(元素數)?

interface ITest 
{ 
    String this[Int32 dataId, Int32 rowId] { get; set; } 
} 

如何確定在分度器的每個維度的元素數量?

例如,如果一個函數接收一個數組一個可以使用.GetUpperBound方法:

Int32 GetSizeOfDimension(Array test, Int32 dimension) 
{ 
    return test.GetUpperBound(dimension); 
} 

我試圖做到以下幾點:

Int32 GetSizeOfDimension(ITest test, Int32 dimension) 
    { 
     // return UBound of test's given dimension 
    } 

回答

2

你不能,在一般情況。設想一個索引器,它在除了一個之外的每一個案例中「工作」 - 這是在程序開始時隨機確定的。除了蠻力之外,你會如何發現這種情況?

如果您需要此信息,您的界面將不得不直接公開它。

0

你不行。

儘管索引器通常用於使用連續索引訪問集合,但實際上並沒有任何限制。例如,該方法可能僅返回參數(1,2),(45,188),(-78,129837123)和(0,1000)的有效值。爲這些值指定界限將毫無意義。

如果您希望能夠從接口獲取邊界,您必須在接口中添加屬性或方法,以便實現接口的類可以根據接口的實現方式提供大小。