1

我正在学习接口属性并遇到了一些我认为应该基于 MSDN 和书籍示例工作的东西,但事实并非如此。如果我显式实现接口属性,则当我的类实例尝试访问时它不会被识别,但如果我隐式执行它则可以正常工作(不确定这是否是正确的术语)。

interface IMyInterface
  {
    string Name { get; set; }       
  }

class MyClass : IMyInterface
{
    private string name;

    string IMyInterface.Name  //works if not explicit: i.e., public string Name
    {
        get { return this.name; }
        set { this.name = value; }
    }
}


class Program
{
    static void Main(string[] args)
    {
        MyClass myClass = new MyClass();
        myClass.Name = "blah";  // fails

    }
}
4

1 回答 1

3

这就是它应该如何与显式接口实现一起工作:

实现接口的类可以显式地实现该接口的成员。当显式实现成员时,不能通过类实例访问它,而只能通过接口的实例访问。

因此,如果您像这样重新编写代码,它应该不再失败:

static void Main(string[] args)
{
    IMyInterface myClass = new MyClass();
    myClass.Name = "blah";  // no longer fails
}
于 2012-06-29T03:55:12.300 回答