System.Drawing.Imaging.PropertyData
はJPEGファイルのEXIFデータを取得・設定する際に必要ですが、コンストラクタが非公開なので通常の方法ではインスタンスを作成できません。これはSystem.Runtime.Serialization.FormatterServices
のGetSafeUninitializedObject
メソッドで回避できます。
#nullable enable using System.Diagnostics; using System.Drawing.Imaging; using System.Runtime.Serialization; var propItem = CreatePropertyItem(); Debugger.Break(); static PropertyItem CreatePropertyItem() { return (PropertyItem)FormatterServices.GetSafeUninitializedObject(typeof(PropertyItem)); }
GetUninitializedObject
メソッドでも可能です。GetSafeUninitializedObject
メソッドはCLR型専用ですが、こちらは非CLR型でも使えます。
#nullable enable using System.Diagnostics; using System.Drawing.Imaging; using System.Runtime.Serialization; var propItem = CreatePropertyItem(); Debugger.Break(); static PropertyItem CreatePropertyItem() { return (PropertyItem)FormatterServices.GetUninitializedObject(typeof(PropertyItem)); }
参考リンク