すべての.net開発者は、プロパティの概念を知っています。 99.99%の粗いメタデータは、2つのメソッド、ゲッター、セッターを貼り付けるだけのものです。let_propertyメソッドの好奇心
通常、イベントはadd、remove、およびinvokeメソッドと同じことが起こります。
ECMA-335は、プロパティまたはイベントのいずれかに適用される«その他»の種類のメソッドセマンティックを記述します。概念的には、プロパティまたはイベントは複数の«その他»メソッドを持つことができます。
今日は私が«other»メソッドで不動産を見つけた最初の日です。もちろん、それはCOMに関連していなければなりませんでした。インタフェースEnvDTE.Propertyは、(Visual Studioのにアドインを書き込むために使用)EnvDTEアセンブリに、として定義されたプロパティが含まれている次の:
let_Valueは次のように定義された状態で.property object Value()
{
.custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = (01 00 00 00 00 00 00 00)
.get instance object EnvDTE.Property::get_Value()
.other instance void EnvDTE.Property::let_Value(object)
.set instance void EnvDTE.Property::set_Value(object)
}
:
どうやら.method public hidebysig newslot specialname abstract virtual
instance void let_Value([in] object marshal(struct) lppvReturn) runtime managed internalcall
{
.custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = (01 00 00 00 00 00 00 00)
}
、VBScriptのVB.NETより前のバージョンのVBでは、Letキーワードを使用してプロパティを定義できます。そしてLetはSetと同じ署名をしています。私はここに関係があると感じます。
しかし、誰もがこのプロパティはEnvDTEがで書かれている言語で宣言されている方法を知っていますか?どのようにして同じパターンのアセンブリを作成できますか(ilasmを使用しないと、それは簡単すぎるでしょう)?誰も似たような財産に直面していますか?
そして、誰もがこの1よりも多分異なるセマンティックで、他«その他»プロパティを見ているのでしょうか?そしてもしそうなら、彼らは何に慣れていますか?
徹底的な調査をいただきありがとうございます。 –
私の喜び。私は確信していますが、将来のあるときにはセシルのものを返すことになるでしょう:P –
ああ、fwiw、Lidinの本もannotated CLI規格も、もっと多くの情報を提供していません。それに関連する他のメソッドやイベント、プロパティが存在する可能性があります。 –