相关疑难解决方法(0)

定制,复杂,动态反射解决方案 - C#

我有很多我正在使用的自定义类,我将解释并发布示例.在解释他们所做的一切之后,我将尝试清楚地描述我的错误发生的条件.

首先,我使用PropertyGrid来显示几种不同类型对象的属性.因为PropertyGrid的默认绑定不是我想要的描述,我创建了一些自定义类,我将其称为"显示"类.这些Display类是通过传入一个对象然后创建属性来构造的,这些属性返回格式良好的字符串以及传入的真实对象的公共属性(在某些情况下是方法)的描述.

我将用一些简短的示例代码演示这个:

以下是我想在PropertyGrid中显示的对象示例:

public class Joint
{
   public Joint(...)
   {...}

   //properties
   public string Name { get; set;}
   public CustomObject CC { get; set;}
   public List<CustomObject> Custom List { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

字符串属性"Name"在PropertyGrid中显示正常但是CustomObject和List没有以对用户友好的方式显示.

所以我尝试通过编写这个类来创建一个解决方案:

public class DisplayJoint
{       

   private Joint _jnt;

   public DisplayJoint(Joint jnt)
   {
      _jnt = jnt;
   }

   //properties
   public string Name {  get { return _jnt.Name; } }

   [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
   public DisplayCustomObject CC {  get { return new DisplayCustomObject(_jnt.CC); } }

   [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
   public List<CustomObject> CustomList { get; set;}
} …
Run Code Online (Sandbox Code Playgroud)

c# reflection propertygrid winforms

9
推荐指数
1
解决办法
1843
查看次数

标签 统计

c# ×1

propertygrid ×1

reflection ×1

winforms ×1