C# 如何获取索引器类对象的大小(元素数)?

C# 如何获取索引器类对象的大小(元素数)?,c#,C#,给定一个通过以下接口接受参数的函数: interface ITest { String this[Int32 dataId, Int32 rowId] { get; set; } } 如何确定索引器每个维度中的元素数 例如,如果函数接收数组,则可以使用.GetUpperBound方法: Int32 GetSizeOfDimension(Array test, Int32 dimension) { return test.GetUpperBound(dimension); }

给定一个通过以下接口接受参数的函数:

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
    }

一般来说,你不能。想象一下,一个索引器在每一种情况下都“起作用”,除了在程序开始时随机确定的一种情况。除了用暴力,你会怎么看待这个案子

如果您需要此信息,您的界面必须直接公开它。

您不能

虽然索引器通常用于使用连续索引访问集合,但实际上并没有任何东西限制它。例如,该方法可能仅返回参数(1,2)、(45188)、(-78129837123)和(01000)的有效值。为这些值指定边界将是毫无意义的

如果希望能够从接口获取边界,则必须在接口中为其添加属性或方法,以便实现接口的类可以根据接口的实现方式提供大小