私は.NETの開発者であり、OOPについてよく知っています。 しかし、最近私は興味深い事実に気づいた。不思議な継承の変更
System.Data.SqlClient.SqlCommand
は、 System.Data.Common.DbCommand
に由来します。後者はSystem.IDbCommand
を実装しています。 System.IDbCommand
は、IDbConnection
のインスタンスConnection
を公開します。 の場合DbCommand
ただし、このプロパティはDbConnection
タイプを返します。最後にSqlCommand
の同じプロパティはSqlConnection
ですが、コンパイル時にエラーが発生しましたが、これを実行しようとしました。上記の例でこれはどのように達成されたのですか?同じパターンを再現するにはどうしたらいいですか? (コンパイルではない)
マイコード:
public interface IFoo { }
public interface IBar
{
IFoo TheFoo();
}
public abstract class AbsFoo : IFoo { }
public abstract class AbsBar : IBar
{
public abstract AbsFoo TheFoo();
}
public class ConcreteFoo : AbsFoo { }
public class ConcreteBar : AbsBar { }
'SqlCommand'のやり方は、Jasonの**と** Richardの答えの両方を使う必要があります。どちらの答えも全体の2つの部分です。 – Enigmativity