0

リフレクターで DataGridViewTextBoxCell プロパティの ValueType を見ると、DataGridViewCell のプロパティをオーバーライドしていることがわかります。

奇妙なことに、オーバーライドされたプロパティは読み取り専用ですが、親クラスのプロパティは読み書き可能です。

プロパティがシャドウされており、リフレクターが ...erm .. これを反映していないと推測することしかできません。

これは正しいですか?

eta: vb.net として、リフレクターでソースを見ています。

4

1 に答える 1

1

CLR は、プロパティをメソッドとして内部的に実装します。アクセサごとに 1 つのメソッドがあります。したがって、プロパティが読み取り/書き込みの場合、2 つの方法があります。メソッドが読み取り専用または書き込み専用の場合、メソッドは 1 つだけになります。

Visual Basic の代わりに IL を選択した場合は、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」で始まることに注意してください。

2 つのメソッドがあるため、それらを個別にオーバーライドできます。

于 2009-09-08T00:00:45.530 に答える