实现接口时,如何实现索引器属性?

时间:2018-05-14 19:27:13

标签: c# com interface-implementation

我正在使用以其他语言创建的COM API,我正在使用C#访问它。我正在尝试实现其中一个接口,但我在VS中看到一个错误:

'MyClass'没有实现接口成员'InterfaceName.MemberName [object] .set'。“。

我一直在搜索,并了解了索引器属性(我认为这是)。但是,我仍然无法弄清楚如何实现这个接口成员。

我拼凑在一起的代码看起来像这样

private string[] membername= new string[10];
[System.Runtime.CompilerServices.IndexerName("MemberName")]
public string this[object index]
{
    get
    {
        return membername[(int)index];
    }
    set
    {
        membername[(int)index] = value;
    }
}

但这似乎不起作用。

非常感谢任何帮助。

在我正在使用的文档中,这是给出的示例。

Public Property MemberName( _
   ByVal Index As Variant _
) As String

1 个答案:

答案 0 :(得分:0)

事实证明,在这种情况下,你不能使用{ get; set; }的句法糖。实际上,您必须为索引属性的get和set创建基础方法。

工作代码看起来像这样......

private string[] MemberName = new string[10];
public string get_MemberName(object Index)
{
    return MemberName[(int)Index];
}

public void set_MemberName(object Index, string Value)
{
    MemberName[(int)Index] = Value;
}