2017-10-09 1 views
1

私は構造体のTypeを持っています。開発者がStructLayoutAttributeを使用して構造体レイアウトを適用したかどうかを確認するにはどうすればよいですか? StructLayoutAttributeの有無にかかわらず、すべての構造体にSystem.RuntimeType.StructLayoutAttributeが設定されているため、Type.CustomAttributesの下には表示されません。StructLayoutが開発者によって適用されているかどうかを確認してください

+0

これはなぜ重要なのか説明する必要があります。 –

+0

実際の目標は、要求バイトを構造体にマーシャリングする属性の存在に応じてアクティブ化されるカスタムASP.Net-Core InputFormatterを記述することです。そうでない場合は、別のフォーマッタが使用されます。そうすれば 'Content-Type'ヘッダを使わなくてもいいです。 –

+0

したがって、使用するフォーマッタを指定する独自の属性が必要になります。 –

答えて

2

CustomAttributeではありません。それは普通のAttributeです。

これは、Type.IsLayoutSequential,IsExplicitLayoutまたはType.IsAutoLayoutをチェックできることを意味します。

EDIT: フィールドが直接公開されているようです。 Type.StructureLayoutAttribute

+0

属性の詳細を取得したくありません。私がチェックしたいのは、.csファイルのstruct型定義の中で、 'StructLayoutAttribute'が開発者によって明示的に適用されているかどうかです。 –

+0

ソース.csファイルがない@BrunoZell?すべての構造体にレイアウトが必要なので、生成されたアセンブリでは不可能だと思います。 – user6144226

+0

はい、ソースファイルなし。それが不可能なら、私は本当に反射の力を過大評価しましたか、ここでは何かを慣れないようにしようとしていますか? –

関連する問題