【发布时间】:2021-01-19 12:36:04
【问题描述】:
我正在制作一个带有“propertygrid 控件”的表单应用程序。
我希望所有属性始终以非粗体文本显示 --- 始终将所有属性视为“默认”值。而且这个“测试”类有很多属性。
我认为最好的方法是动态实现“ShouldSerializeXXX”方法。手动实现缺乏灵活性,不智能。
我知道使用“DynamicMethod 类”动态实现函数的方法[https://docs.microsoft.com/en-US/dotnet/api/system.reflection.emit.dynamicmethod?view=net-5.0]。但是'ShouldSerializeXXX'函数仅仅通过定义就有效果,我不知道如何实现这个函数。
谁能告诉我这样做的方法?对不起我的英语不好。
public class Test
{
public int AAA {get;set;}
public string BBB {get;set;}
public bool CCC {get;set;}
...
...
//This class has a lot of property, so I want to dynamically implement the function like this:
private bool ShouldSerializeAAA(){ return false; }
private bool ShouldSerializeBBB(){ return false; }
...
}
【问题讨论】:
-
您可以使用自定义类型描述符来实现它:看这个例子:Set the default value of DesignerSerializationVisibility to hidden。
标签: c# .net winforms propertygrid