How to get a Roslyn FieldSymbol from a FieldDeclarationSyntax node?

邮差的信 提交于 2019-11-27 15:01:17

I've been here several times :)

You need to remember that a field declaration syntax can declare multiple fields. So you want:

foreach (var variable in node.Declaration.Variables)
{
    var fieldSymbol = model.GetDeclaredSymbol(variable);
    // Do stuff with the symbol here
}

Can I expand on this? I'm fine with the design path they took separating these on the syntactic level. One field can declare several variables.

But on the symbol level, I find it confusing that they seem to be merged into a single symbol (i.e. IFieldSymbol), when in fact some traits are on the "field as a whole declaration", not on the variable level.

Consider IFieldSymbol.IsReadOnly for example. When declaring multiple variables as part of a single field declaration, the readonly constraint is on the field level. And so is the data type. Why would I want to access that information on every possible variable?

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!