我有两个接口:
public interface IFooFile
{
string Name { get; }
}
public interface IFooProduct
{
string Name { get; }
}
我想用私有集来实现它们:
public class AFooThing : IFooFile, IFooProduct
{
public string IFooFile.Name { get; private set; }
public string IFooProduct.Name { get; private set; }
}
但访问修饰符正在创建错误:
“AFooThing.IFooFile.Name.set”的访问者必须比属性或索引器“AFooThing.IFooFile.Name”更具限制性。
如果我像这样实现类,我没有访问修饰符错误,但我没有第二个接口:
public class AFooThing : IFooFile
{
public string Name { get; private set; }
}
我无法弄清楚如何使用添加的“私有集”实现两个接口而不会导致问题。处理这个问题的正确方法是什么?
您不能将访问修饰符用于显式接口,它是public
。你也无法添加set
属性,因为它在interface
中不存在。您可以做的是通过使用支持字段来实现目标,例如:
public class AFooThing : IFooFile, IFooProduct
{
private string _fooFileName;
private string _fooProductName;
string IFooFile.Name => _fooFileName;
string IFooProduct.Name => _fooProductName;
public AFooThing()
{
_fooFileName = "FooFileName";
_fooProductName = "FooProductName";
}
}