いくつかの値でクラスのフィールドを設定する動的メソッドを生成しようとしています。通常のフィールドの型がstructの場合、次のように新しい構造体でフィールドを設定します。var myStruct = new SomeStruct();
。コンストラクタを持たない新しい構造体を生成する方法
しかし、私はその構造体のデフォルトのコンストラクタを見つけることができません。
var type = valueForField.GetType ();
if(type.IsValueType && !type.IsPrimitive && !type.IsEnum)
{
emit
.ldarg_0
.newobj (type.GetConstructor(Type.EmptyTypes))
.stfld (field);
continue;
}
それは理由NEWOBJ機能
にnullを渡すのライン.newobj (type.GetConstructor(Type.EmptyTypes))
で失敗した誰もが、それはコンストラクタをデフォルトを通じて、新たな構造の作成を放出する方法を教えてもらえますか?
C#でパラメータのないコンストラクタを作成することはできませんが、.NETで行うことができますが、最初の文は間違いなく不正確です。 http://msmvps.com/blogs/jon_skeet/archive/2008/12/10/value-types-and-parameterless-constructors.aspxを参照してください。 – kvb