【发布时间】:2021-04-14 13:33:35
【问题描述】:
我正在尝试获取一组简单的嵌套接口,以便我可以在派生类上强制执行一些成员。
public enum Category { Mental, Physical, Technical }
interface IAbilities
{
List<IAbility> Abilities { get; set; }
}
interface IAbility
{
Category Category { get; }
int Value { get; set; }
string Descritpion { get; set; }
}
public class MentalAbilities : IAbilities
{
// This is what I want so that "Abilities" is accessible
public List<MentalAbility> Abilities { get; set; }
// This is what Intellisense generates, cannot be set to public
//List<IAbility> IAbilities.Abilities { get; set; }
}
public class MentalAbility : IAbility
{
public Category Category { get; } category
public int Value { get; set; }
public string Descritpion { get; set; }
}
当然,Intellisense 生成的位编译,但“能力”不能从类实例访问,因为它不能设置为公共。
我想告诉我“MentalAbilities”没有实现接口成员“IAbilities.Abilities”。 “MentalAbilities.Abilities”无法实现“IAbilities.Abilities”,因为它没有 List
我不明白,因为“MentalAbility”是从“IAbility”接口派生的,所以应该履行合同。
【问题讨论】:
-
这里没有嵌套任何东西。嵌套意味着在一个类中被删除。你可以在一个类中声明枚举、委托、接口、类,如此嵌套。但是在这里,没有任何东西是嵌套的。并且接口不能在接口中声明。
-
@OlivierRogier 好的,我明白了。我认为嵌套意味着另一个接口中的接口。所以我的 List
is IAbility 是不可能的吗?我已将接口更改为公开,但它并没有解决我的问题。