关于实现c#多继承的总结

最近在由于项目需要所以重写了很多基本控件,然后问题来了,由于这些控件都要需要用到一个通用的实体去设置许许多多的属性,而我们又没法重写类似Button这样的超类,所以正常来说的话,我们需要在每一个控件子类中复制相同的很多很多个方法,虽然也可以实现,但是这个就一点逼格都没有了,所以上了stackoverflow去找方法,有点乱,也有很多不符合项目的需要,所以总结了一下方法,接下来看下怎么实现

其实要是在C++里,有个概念叫做多继承就可以直接实现这个方法了,然后我们用的是.net,这句好像说的是废话,跟怎么实现没关系。首先,我们需要创建一个空接口

public interface IControl
    {


    }

然后在相同的命名空间下在创建一个静态扩展类,并实现这个空接口

public static class IControlAddtion
    {
        public static void SetWidth<T>(this T inControl, int width) where T : IControl
        {
            (inControl as Control).Width = width;
        }


        public static void SetHeight<T>(this T inControl, int height) where T : IControl
        {
            (inControl as Control).Height = height;
        }

}

然后每个子类都继承这个接口就搞定了,实现的效果有点类似多继承,但是主要是利用了静态类的特性,接下来看看怎么用

Icontrol control = new MyCustomButton()

control.SetWidth(0);

这里需要用简单工厂模式封装一下,然后就可以完美地利用这个特性了

----要是每样东西都有恢复出厂设置按钮就好了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值