C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2783字,纯文字阅读大概需要4分钟。
内容图文
![C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用](/upload/InfoBanner/zyjiaocheng/1222/02612181a20f4fd38b9a7d462c6a268c.jpg)
public SonClass:FatherClass
{
定义属性
。。。。
}
Type thisType = typeof(SonClass);
方法一:
PropertyInfo[] pis = thisType.BaseType.GetProperties();//thisType.BaseType就是FatherClass
foreach (PropertyInfo p in pps)
{
properties.Remove(p.Name);
}
方法二:
PropertyInfo[] pis = thisType.GetProperties();
foreach (PropertyInfo p in pps)
{
if (p.DeclaringType != thisType)
properties.Remove(p.Name);
}
}
方法三:
/// <summary>
/// 支持展现属性的类型转换器
/// </summary>
/// <remarks></remarks>
[System.Runtime.InteropServices.ComVisible(false)]
[System.Reflection.Obfuscation(Exclude = true, ApplyToMembers = true)]
public class TypeConverterSupportProperties : System.ComponentModel.TypeConverter
{
/// <summary>
/// 支持获得属性
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
{
return true;
}
/// <summary>
/// 获得属性
/// </summary>
/// <param name="context"></param>
/// <param name="value"></param>
/// <param name="attributes"></param>
/// <returns></returns>
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
{
PropertyDescriptorCollection ps = TypeDescriptor.GetProperties(value, attributes);
return ps;
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(string))
{
return false;
}
return base.CanConvertTo(context, destinationType);
}
}
TypeDescriptor 类
提供有关组件属性 (Attribute) 的信息,如组件的属性 (Attribute)、属性 (Property) 和事件。无法继承此类。
命名空间:System.ComponentModel
程序集:System(在 system.dll 中)
相反,TypeDescriptor 是组件的可扩展检查机制:即实现 IComponent 接口的那些类。与反射不同的是,它并不检查方法。通过目标组件的Site 中提供的几种服务,可以动态扩展 TypeDescriptor。下表显示这些服务。
服务名 |
说明 |
---|---|
启用其他类(如 ToolTip),以便为组件提供额外的属性 (Property)。 |
|
启用其他对象,以便修改由组件公开的标准元数据。 |
|
启用一个类,以便完全且动态地指定其自身的元数据,进而替换 TypeDescriptor 的标准检查机制。 |
TypeDescriptor 提供的扩展性允许组件的设计时表示形式不同于其实际的运行时表示形式,从而使 TypeDescriptor 对于生成设计时基础结构十分有用。
TypeDescriptor 中的所有方法都是 static 的。不能创建此类的实例,也不能继承此类。
可以通过两种不同的方式设置属性 (Property) 和事件值:在组件类中指定它们,或在设计时对它们进行更改。由于可以通过两种方式设置这些值,因此,TypeDescriptor 的重载方法采用两种不同类型的参数:类类型或对象实例。
当要访问 TypeDescriptor 信息并且您具有对象的实例时,应使用调用组件的方法。只有当您不具有对象的实例时,才能使用调用类类型的方法。
为了提高速度,将由 TypeDescriptor 缓存属性和事件。通常,它们在对象的生存期内保持不变。但是,扩展程序提供程序和设计器可以更改对象的属性集。如果是这种情况,则必须调用 Refresh 方法来更新缓存。
原文:http://www.cnblogs.com/1175429393wljblog/p/5559246.html
内容总结
以上是互联网集市为您收集整理的C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用全部内容,希望文章能够帮你解决C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。