2017-10-09 91 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

是的,没有源文件。如果这是不可能的,那么我真的高估了反思的力量,还是我想在这里做一些非惯用的东西? –

相关问题