-
11-09-2019 - |
题
有没有办法做到以下几点?我看到的属性参数必须是常量表达式,所以我将如何解决此问题?如果我不想加载的一些的使用结合,什么的下一个最佳选择的属性分为一个DataGridView?
class TestObj
{
private bool isBrowsable = false;
[Browsable(isBrowsable)]
public string String1
{
get
{
return "Foo";
}
}
[Browsable(isBrowsable)]
public string String2
{
get
{
return "Baz";
}
}
}
解决方案
可以通过实施提供在运行时动态定制类型信息ICustomTypeDescriptor 接口 - 但这是在几乎没有这么简单带属性的装饰性能相当多的工作。
其他提示
有关运行时,我认为你可能看ICustomTypeDescriptor。如果它是一个编译时决定的,你也可以使用编译器指令:
#define ISBROWSABLE
#if ISBROWSABLE
[your attribute]
#endif
可以从一些配置文件或数据库使用类似于方法加载值 如何在我的属性设置动态值通过使类和属性的名称,例如
[IsBrowsable( “类名”, “PROPERTYNAME”)]
然而,将是恼人的类型作为字符串名称,即是显而易见的,不管怎样应该能够从反射来确定。 您可以尝试我们IL韦弗工具,如PostSharp或Fody。(我相信,他们有能力做到这样认为,但没有一个例子刚才)☑
不隶属于 StackOverflow