我有两个界面:
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; }
}
我不知道如何使用添加的“私有集”实现两个接口而不会引起问题。处理此问题的正确方法是什么?
答案 0 :(得分:3)
您不能为显式接口使用访问修饰符,它是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";
}
}