在今天遇到一串愚蠢的错误以后,我真的很想说好多遍:C#是傻逼!
反正我的代码一向来你们都说是开玩笑啦- -| 看看就好。
事情是这样:我想写一个某种类模块的公共父类(没人愿意看见一堆模块是一样的代码的吧,何况里面还是反射内容),然后兴冲冲的写完了。
“Error:静态方法不能标记为virtual、override、或是abstract”
上次接口不能标记静态方法就算了,还不能标记为纯虚?去你丫的!模块和静态方法就没有人权么?!
好吧于是我想了一个这样的办法,隐藏掉类的构造函数,然后创建一个唯一实例Instance,子类复写纯虚的Instance的实例方法。
OK,没问题了。不过Instance在哪儿初始化呢?嘛太简单了!静态构造函数嘛!
聪明的人儿,你们已经猜到发生了什么事了,是么?
提示1、静态构造函数
提示2、静态方法不能标记为virtual、override、或是abstract
提示3、子类除了复写纯虚方法以外什么都没有做,外界调用的第一个方法一定是Instance上的一个父类方法。
反正为此我已经死了两天的脑细胞了。
可以用类似mix-in的思路吧……把公共的部分单独提取出来作为一个东西……?
这貌似已经属于结构性的问题了=-=
你需要更加自由的 Ruby。