我是一名.NET開發人員,對OOP非常瞭解。然而,最近我注意到一個有趣的事實。奇怪的繼承修改
System.Data.SqlClient.SqlCommand
派生自 System.Data.Common.DbCommand
。後者實現System.IDbCommand
。 System.IDbCommand
暴露屬性Connection
其中的一個實例IDbConnection
。 在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 { }
您需要同時使用Jason的**和** Richard的答案來執行「SqlCommand」的功能。兩個答案都是整體的兩個部分。 – Enigmativity