Visual studio DataGridViewTextBoxCell中奇怪的属性重写

Visual studio DataGridViewTextBoxCell中奇怪的属性重写,visual-studio,winforms,properties,overriding,reflector,Visual Studio,Winforms,Properties,Overriding,Reflector,如果查看reflector中的DataGridViewTextBoxCell属性ValueType,可以看到它覆盖DataGridViewCell中的属性 奇怪的是,被重写的属性是只读的,而父类中的属性是读写的 我只能假设该地产已经被遮蔽,反射器没有…呃。。反映这一点 是这样吗 eta:我在reflector中看到的源代码是vb.net。CLR在内部以方法的形式实现属性。每个acessor将有一种方法。因此,如果您的属性是读/写的,那么您将有两种方法。如果您的方法是只读或写只读的,那么您将只有一

如果查看reflector中的DataGridViewTextBoxCell属性ValueType,可以看到它覆盖DataGridViewCell中的属性

奇怪的是,被重写的属性是只读的,而父类中的属性是读写的

我只能假设该地产已经被遮蔽,反射器没有…呃。。反映这一点

是这样吗


eta:我在reflector中看到的源代码是vb.net。

CLR在内部以方法的形式实现属性。每个acessor将有一种方法。因此,如果您的属性是读/写的,那么您将有两种方法。如果您的方法是只读或写只读的,那么您将只有一个方法

如果选择IL而不是Visual Basic,您可以使用Reflector自己看到这一点


.method public hidebysig specialname virtual instance class [mscorlib]System.Type get_ValueType() cil managed
如果您使用ToString方法


.method public hidebysig virtual instance string ToString() cil managed
。。。您将注意到,两者都以“.method”开头


因为您有两个方法,所以可以分别重写它们。

我从未意识到只重写其中一个访问器是可能的。。。很高兴知道!然而,我发现它相当混乱,因为重写的属性似乎是只读的,即使它不是…我仍然有点困惑。我知道一个属性声明被转换成两个方法,但是,至少在vb.net中,不可能重写读写属性,而只重写get-至少在没有shadows关键字的情况下是这样。是的。。你说得对。昨天我用C#测试了它,既然它能工作,我想它也能在VB.NET上工作。现在我在VB.NET上尝试了它,但还没有找到一种方法使它工作。解决方法是放置一个访问基本setter的setter。