当前位置:  开发笔记 > 编程语言 > 正文

是否可以创建仅接受具有特定属性的类型的泛型类

如何解决《是否可以创建仅接受具有特定属性的类型的泛型类》经验,为你挑选了1个好方法。

我想创建一个类"指标",它将接受"控制"并设置其"图像"属性.

由于Control没有Image属性,我想实现一个模板类("Indicator"),它只接受具有此属性的类(Image).

可能吗?



1> Fabjan..:

我们可以通过添加私有无参数构造函数和另一个我们将进行类型检查的公共ctor 改变创建此类实例的方式:

class Indicator where T : Control
{
    private T _control;

    private Indicator() 
    {
    }

    public Indicator(T control)
    {
       if(control.GetType().GetProperties().All(p => p.Name != "Image" || p.PropertyType != typeof(Image)))
       { 
          throw new ArgumentException("This type of control is not supported");
       }
       this._control = control;
    }
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有