【发布时间】:2011-10-27 19:52:36
【问题描述】:
我是一名 .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所做的事情。两个答案都是整体的两个部分。
标签: c# .net oop inheritance abstraction