【发布时间】:2020-06-05 06:28:28
【问题描述】:
我想在一个类中实现以下接口:
public interface IAgro {
AgroState agroState { get; }
}
问题是我希望我的属性实现一个从 AgroState 继承的不同类,而不是使用接口在类中实现 AgroState
public class E1_AgroState : AgroState
{
...
}
public class BasicWalkingEnemy : Entity, IAgro
{
public E1_AgroState agroState { get; }
}
这是我习惯在 Swift 中使用协议做的事情,例如,但 C# 编译器会抱怨
“BasicWalkingEnemy”没有实现接口成员“IAgro.agroState”。 “BasicWalkingEnemy.agroState”无法实现“IAgro.agroState”,因为它没有匹配的返回类型“AgroState”。 [汇编-CSharp]csharp(CS0738)
目前我发现的一种解决方案是:
public class BasicWalkingEnemy : Entity, IAgro
{
public AgroState agroState { get { return _agroState; } }
public E1_AgroState _agroState { get; private set; }
}
但我认为这很不雅。 我的问题有更好的解决方案吗?
【问题讨论】:
标签: c# unity3d inheritance interface properties