C# 类型设计 区分接口和抽象类的应用场合