私は、基本クラスがあり、カップルが派生インタフェースを実装するクラス、例えば場合:C#:実行時に実装するインターフェイスにクラスをキャストする方法はありますか?
public class BaseClass
{
}
public interface IInterface
{
void SomeMethod();
}
public class DerivedA : BaseClass, IInterface
{
public void SomeMethod()
{
// some implementation
}
}
public class DerivedB: BaseClass, IInterface
{
public void SomeMethod()
{
// some other implementation
}
}
をそして、私はBaseClassのフィールドを持つ無関係なクラスがあります。私の実装が前提として提供
public class UnrelatedClass
{
public BaseClass foo;
}
をfooはインターフェイスを実装するいくつかの派生クラスでなければなりません(しかし、私はそのクラスにキャストできないのか分かりません)、それをIInterfaceにキャストしてfoo.SomeMethod()を呼び出すとコンパイルエラーは発生しません。 ?
PS-これを行うには本当にラウンドアバウトの方法ですが、代わりに "IInterface foo"フィールドを使用する必要がありますが、Unityがインターフェイスフィールドをシリアル化せず、カスタムインスペクタを作成したくないため - これは回避策です私はしようとしています。
'BaseClass'は' SomeMethod'を持っているdoesntの。 'IInterface'はそれを持っています。なぜ、' SomeClass'の中に 'SomeMethod'を入れないのですか? '抽象'? – FCin
なぜ 'BaseClass'は' IInterface'を実装していませんか? –
'is'キーワードを使って' if(foo is IInterface){...} 'を確認してください。 – CodingYoshi