私はプロパティを持つインターフェースを持っています:
public interface IEntityModifier
{
...
bool AutoDetachOnFinished { get; set; }
bool Finished { get; }
...
}
それから私はそれを実装します:
bool IEntityModifier.AutoDetachOnFinished { get; set; }
bool IEntityModifier.Finished { get { return this.mFinished; } }
しかしAutoDetachOnFinished
、同じクラス内でアクセスする必要がある場合、コンパイラエラーが表示されます。
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」の定義が含まれておらず、「MEngine.Entities.EntityModifier.SingleValueEntityModifier」タイプの最初の引数を受け入れる拡張メソッド「AutoDetachOnFinished」が見つかりませんでした(ディレクティブまたはアセンブリ参照?)
2つの質問があります:
IEntityModifier.
sを削除するとコンパイラが文句を言うのはなぜですか(実装されたメソッドに適用されるようIEntityModifier.Update
になります)?Update
- なぜアクセスできないの
AutoDetachOnFinished
ですか?