说我有课
class Object
{
Vector2 positon;
}
这个位置在属性网格中是可编辑的,我怎么能在从对象继承的类中将它设置为不可浏览/只读。我知道[Browsable(false)]
and [ReadOnly(true)]
标签,但这将为所有对象设置它,这是我不希望的。
说我有课
class Object
{
Vector2 positon;
}
这个位置在属性网格中是可编辑的,我怎么能在从对象继承的类中将它设置为不可浏览/只读。我知道[Browsable(false)]
and [ReadOnly(true)]
标签,但这将为所有对象设置它,这是我不希望的。
将位置属性声明为virtual
并在派生类型上覆盖它。
public class Class1
{
public virtual string Lol { get; set; }
}
class Class1Impl1 : Class1
{
[Browsable(false)]
[ReadOnly(false)]
public override string Lol
{
get
{
return base.Lol;
}
set
{
base.Lol = value;
}
}
}
class Class1Impl2 : Class1
{
[Browsable(true)]
[ReadOnly(true)]
public override string Lol
{
get
{
return base.Lol;
}
set
{
base.Lol = value;
}
}
}
在运行时执行它是一个不同的问题, IsBrowsable 和 IsReadOnly 是只读属性。您应该谷歌知道是否有可能在运行时更改此属性的实例,我认为不是。
我认为不可能在运行时更改 browseable 属性(我不明白这样做的意义),但是您可以使用一种方法检查您的条件并允许/禁止写入该属性。如果这足够好,如果你愿意,我很乐意模拟一些东西。
编辑:
class SomeClass
{
private Object _foo;
private Object _bar;
public Object Foo
{
get
{
return _foo;
}
set
{
if (_bar != _foo) // replace with your test
{
_foo = value;
}
}
}
}