遇到一个面向对象无法解决的问题。
如下代码所示:
public abstract class ReadOnlyRuleBase { public abstract string GetName() ; } public abstract class RuleBase: ReadOnlyRuleBase { public override string GetName() { return "MyTable" ;} } public class MyTable: RuleBase { //我想在这里添加约束,一定要重写 GetName 方法。怎么办? }
即: 孙类一定要继承某类的虚方法。
后来,变通处理:
public interface IReadOnlyRule { } public interface IWriteableRule { } public abstract class RuleBase { public abstract string GetName() ; } public abstract class MyTable:RuleBase , IWriteableRule { public override string GetName(){ return "MyTable" ;} }
后来,想到一个变通的办法:
public abstract class ReadOnlyRuleBase { public abstract string GetName() ; } public abstract class RuleBase: ReadOnlyRuleBase { public override string GetName() { return GetRuleName() ;} protected abstract string GetRuleName() ; } public class MyTable: RuleBase { // 一定要重写 GetRuleName , 来达到重写爷类的 GetName 方法的目的。 }
这也只是三级的处理方式,每多一级,就会多一个方法,让子类重写,用规范约束好的话,也可以接受。
作者:NewSea 出处:http://newsea.cnblogs.com/
QQ,MSN:iamnewsea@hotmail.com 如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。 |