Как реализовать свойство индексатора при реализации интерфейса?

Я работаю с COM API, который был создан на другом языке, и я обращаюсь к нему с помощью C#. Я пытаюсь реализовать один из интерфейсов, но я вижу ошибку в VS, которая говорит:

MyClass не реализует элемент интерфейса InterfaceName.MemberName[объект].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 ответ

Оказывается, в этой ситуации нельзя использовать синтаксический сахар { 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;
}
Другие вопросы по тегам