C# 无法访问实现的属性(从接口)
我有一个与属性的接口:C# 无法访问实现的属性(从接口),c#,.net,syntax,C#,.net,Syntax,我有一个与属性的接口: public interface IEntityModifier { ... bool AutoDetachOnFinished { get; set; } bool Finished { get; } ... } 然后我实施它: bool IEntityModifier.AutoDetachOnFinished { get; set; } bool IEntityModifier.Finished { get { r
public interface IEntityModifier
{
...
bool AutoDetachOnFinished { get; set; }
bool Finished { get; }
...
}
然后我实施它:
bool IEntityModifier.AutoDetachOnFinished { get; set; }
bool IEntityModifier.Finished { get { return this.mFinished; } }
但是当我需要在同一个类中访问autodetactionfinished
时,会弹出一个编译器错误:
void IEntityModifier.Update(IEntity pEntity, Microsoft.Xna.Framework.GameTime pGameTime)
{
if (!this.mFinished)
{
this.Value += this.Delta * (float)pGameTime.ElapsedGameTime.TotalSeconds;
if (this.Value >= this.Max)
{
this.Value = this.Max;
this.mFinished = true;
if (this.AutoDetachOnFinished) { /* Error Here */ }
}
}
}
错误消息:
14“MEngine.Entities.EntityModifier.SingleValueEntityModifier”没有
不包含“AutoDetachOnFinished”的定义且没有扩展名
方法“AutoDetachOnFinished”接受类型为的第一个参数
“MEngine.Entities.EntityModifier.SingleValueEntityModifier”可以是
找到(是否缺少using指令或程序集
参考?)
我有两个问题:
IEntityModifier.
s(因此IEntityModifier.Update
将成为Update
,应用于任何实现的方法),编译器为什么会抱怨AutoDetachOnFinished
您已经将这些实现为,这意味着您只能通过接口类型的变量来访问它们-
IEntityModifier
要么这样做:
if (((IEntityModifier)this).AutoDetachOnFinished)
或从实现中删除接口名称:
bool AutoDetachOnFinished { get; set; }
bool Finished { get { return this.mFinished; } }
因为您正在显式地实现接口
bool IEntityModifier.AutoDetachOnFinished { get; set; }
必须强制转换到接口才能访问显式实现。也许不是你想要的。因此,请从实现中删除接口名称
bool AutoDetachOnFinished { get; set; }
在执行显式接口实现时,将this.autodetactionfinished转换为IEntityModifier类型的对象
IEntityModifier entitymodifier=(IEntityModifier)objectInstanceOfimplementedClass;
if( entitymodifier.AutoDetachOnFinished)