モジュールの初期剤はSilverlightとWindows Phone 7でサポートされていますか?

StackOverflow https://stackoverflow.com/questions/5365994

  •  27-10-2019
  •  | 
  •  

質問

IL .NETサポートモジュール初期化剤を操作することをいとわない場合

http://blogs.msdn.com/b/junfeng/archive/2005/11/19/494914.aspx

http://tech.einaregilsson.com/2009/12/16/module-initializers-in-csharp/

モジュールの初期剤はSilverlightとWindows Phone 7でサポートされていますか?

役に立ちましたか?

解決

C ++/CLIのみがモジュール初期化をサポートしています。そして、それは間接的にのみ、それらを使用してCRTを開始し、管理されていない変数とオブジェクトを初期化します。あなたはイリノイに書かなければなりません。私は試してみました、それはシルバーライト4でうまくいきました:

.assembly extern mscorlib
{
  .publickeytoken = (7C EC 85 D7 BE A7 79 8E )
  .ver 2:0:5:0
}

.assembly test
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78
                                                                                                               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )
  .custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 18 53 69 6C 76 65 72 6C 69 67 68 74 2C 56
                                                                                                        65 72 73 69 6F 6E 3D 76 34 2E 30 01 00 54 0E 14
                                                                                                        46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 79
                                                                                                        4E 61 6D 65 0D 53 69 6C 76 65 72 6C 69 67 68 74
                                                                                                        20 34 )                                    
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}

.method assembly specialname rtspecialname static void .cctor() cil managed
{
  ldc.i4.s   42
  stsfld     int32 Example.Class1::test
  ret
}

.class public auto ansi beforefieldinit Example.Class1
       extends [mscorlib]System.Object
{
  .field public static int32 test
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    .maxstack 8
    ldarg.0
    call       instance void [mscorlib]System.Object::.ctor()
    ret
  }
}

その愚かな例であるモジュール初期化は、Class1の静的フィールドを設定します。次に、Sample SilverlightアプリにClass1のインスタンスを作成し、デバッガーで値を確認しました。

このまったく同じコードがしました いいえ Windows Phoneエミュレータで作業します。 TargetFrameWorkAttributeを変更する必要がありましたが、実際にこれを試していませんでした。それが問題の原因であるとは思わない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top