【发布时间】:2019-08-26 15:05:58
【问题描述】:
我有两个接口:
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; }
}
我不知道如何在不引起问题的情况下使用添加的“私有集”实现这两个接口。处理这个问题的正确方法是什么?
【问题讨论】:
-
您需要 2 个名称属性吗?如果是这样,为什么?你不觉得这很奇怪吗?
-
如果您只需要同时满足这两个接口,只需使用 one
Name属性实现它们即可。见here -
@maccettura 仅当相同的名称适用于两个属性时才有效。产品可以允许名称中包含斜杠,并且不需要扩展名。它适用于
ICollection.Count和ICollection<T>.Count,因为它们在概念上是相同的。 -
@maccettura 它们是两种不同的格式。
标签: c# interface access-modifiers