在好多地方看到silverlight的抽象都是通过接口进行,虽然接口可以解决一部分问题但是还是不是很方便,如果项目的规模比较大处里不好代码之间的关系就有可能在一个文档里面会有上千行代码,而会有很多重复的代码,有很多类似的功能的代码必需的重写,这样不仅增加了工作量而且整个项目的结构会很复杂,即使代码中的注释很详细也很难看得明白。
有一种可以很好解决这种问题的方法就是使用抽象类,相同的属性和方法可以在基类里面实现,子类里只需继承基类就可以获得基类的属性,不用重新写,这样层层实现,不会导致一个文件里充斥大量的代码造成结构混乱。
这种方法在其他的项目中可以有很明显的效果,但是在SilverLight中设计和实现是分离开的,如果在抽象类来抽象在子类里的继承时就会造成设计器的可视化的设计不可视,所以有会有一定的问题。
为什么会出现图形设计器不可视?
这是当抽象基类继承于UserControl就可以被子类的前台设计所使用,在xaml中使用基类是一个实例化的过程,由于抽象类不是可以被实例化的所以就不可能生成可视的UserControl控件。但是运持后的效果还是与原来的一样,只是没有可视化的设计界面,没有设计器是一件很痛苦的事情,每次修改设计想看效果都要运行一下项目,这样显然不可取,不然可以把人逼疯的。
那么如何既可以用类抽象,又可以看到可视化的设计器呢?
上面提到了没有可视化的设计器是因为抽象类不可以实例化,所以在设计的时候在控件继承之前再建一个实体类,然后再让控件类继承实体类这样就可以既有抽象类的方便好用,又有可视化的设计器,一箭双雕