Как установить свойство явно реализованного интерфейса? - PullRequest
2 голосов
/ 09 марта 2020

У меня есть следующий фрагмент кода:

public interface Imy
{
    int X { get; set; }
}

public class MyImpl : Imy
{
    private int _x;
    int Imy.X
    {
        get => _x;
        set => _x = value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var o = new MyImpl();
        o.Imy.X = 3;//error
        o.X = 3;//error
    }
}

Я просто хочу sh присвоить значение X, но получаю 2 ошибки компиляции. Как это исправить?

1 Ответ

8 голосов
/ 09 марта 2020

Когда вы реализуете интерфейс явно , вам нужно привести переменную к интерфейсу:

((Imy)o).X = 3;

o имеет тип MyImpl в вашем коде. Вам необходимо привести его к Imy явно, чтобы использовать свойства интерфейса.


Альтернативно, вы можете объявить o как Imy:

Imy o = new MyImpl();
o.X = 3;
...