Как реализовать свойство индексатора при реализации интерфейса? - PullRequest
0 голосов
/ 14 мая 2018

Я работаю с 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 голосов
/ 15 мая 2018

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