I wanted to set a value of BrowsableAttribute
for some of MyClass
instance's properties at runtime:
public class MyClass
{
[Browsable(true)]
public int P1 { get; set }
...
}
Please advise how it can be done as well as how to add BrowsableAttribute
to a MyClass
instance's property at runtime if this attribute doesn't exist.
You can implement a custom type descriptor - which intercepts the the attribute on the way to whatever is using it. Thus having an effect which looks like the attribute is changing.
See - Part 1, Part2
You sort of can. I'm trying something like this at the moment, which I managed to get working with CategoryAttribute. Currently though, this stops the propertiesgrid from working all together though, even though this is being called in the constructor of a button:
Hope this helps
You can't - unless you intercept loading the assembly. The attributes are stored in metadata, and loaded with the assembly, and attributes should generally be immutable (as
BrowsableAttribute
is).Basically attributes aren't meant to be modified at execution time.