【问题标题】:How to set property of explicitly implemented interface?如何设置显式实现接口的属性?
【发布时间】:2020-03-09 10:28:23
【问题描述】:

我有这个代码 sn-p:

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
    }
}

我只想为 X 赋值,但得到 2 个编译错误。如何解决?

【问题讨论】:

    标签: c# interface properties compilation explicit


    【解决方案1】:

    当你显式地实现接口时,你需要将变量强制转换为接口:

    ((Imy)o).X = 3;
    

    o 在您的代码中属于 MyImpl 类型。您需要将其显式转换为 Imy 才能使用接口属性。


    或者,您可以将o 声明为Imy

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

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 1970-01-01
      • 2010-09-21
      • 2013-12-03
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多