Was ist der Unterschied zwischen der DeclaringSyntaxReferences Eigenschaft und der Locations Eigenschaft in der ISyntax Schnittstelle?Unterschied zwischen ISymbol.DeclargingSyntaxReferences und ISymbol.Locations
3
A
Antwort
4
Der Hinweis auf die Antwort ist in dem <remarks>
Kommentarbereich:
Die Syntax Knoten (n), die das Symbol erklärt. Wenn das Symbol in Metadaten deklariert wurde oder implizit deklariert wurde, wird ein leeres schreibgeschütztes Array zurückgegeben.
Das bedeutet, dass Locations
auch Metadaten-Referenzdeklarationen und implizit deklarierte Speicherorte zurückgibt. Sie können Belege für die in der LocationsTests.cs Datei sehen:
var c = s.GetTypeMembers("C", 0).Single() as NamedTypeSymbol;
var obj = c.BaseType;
Assert.Equal("MetadataFile(CommonLanguageRuntimeLibrary)", obj.Locations[0].ToString());
wo c
ist die class C
in:
namespace N.S{class C{int F; void M(int P}{}}
so obj
System.Object
ist. Dies ist sinnvoll, weil Sie keinen tatsächlichen Quellcode haben und daher Syntax, in der Kompilierung, die System.Object
definieren würde.