2017-10-09 93 views
1

我有一個結構的Type。我該如何檢查開發者是否已經使用StructLayoutAttribute應用了結構佈局?它不在Type.CustomAttributes下列出,因爲在所有結構中都有一個System.RuntimeType.StructLayoutAttribute,而不管StructLayoutAttribute是否存在。檢查StructLayout是否被開發人員應用

+0

你必須解釋爲什麼這對你很重要。 –

+0

我的實際目標是編寫一個自定義的ASP.Net-Core InputFormatter,它將根據該屬性的存在被激活,以將請求字節編組爲一個結構。否則,將使用另一個格式化程序。這樣就不需要使用「Content-Type」頭。 –

+0

所以你只需要你自己的屬性來指定應該使用哪一個格式化器。 –

回答

2

這不是CustomAttribute這是一個普通的Attribute

這意味着你可以檢查Type.IsLayoutSequential,IsExplicitLayoutType.IsAutoLayout。編輯: 似乎該領域直接暴露。 Type.StructLayoutAttribute

+0

我不想獲取屬性詳細信息。我想要檢查的是,如果在.cs文件的結構類型定義中,開發人員明確應用了「StructLayoutAttribute」。 –

+0

@BrunoZell沒有源代碼.cs文件?我猜想這在生成的程序集中是不可能的 - 因爲所有結構都需要佈局 – user6144226

+0

是的,沒有源文件。如果這是不可能的,那麼我真的高估了反思的力量,還是我想在這裏做一些非慣用的東西? –

相關問題