0
LocalDeclarationをグローバルリソースに変換する関数を記述しました。今、私は、プロパティとそれぞれの定義に置き換えんだけど、私は新しい構文を使用して、プロパティとそれを交換したい=>Roslyn(ラムダ)エクスプレッションBodiedプロパティの構文
public PropertyDeclarationSyntax ConvertToResourceProperty(string resouceClassIdentifier, string fieldName, string resourceKey, CSharpSyntaxNode field)
{
var stringType = SyntaxFactory.ParseTypeName("string");
var resourceReturnIdentifier = SyntaxFactory.IdentifierName(resouceClassIdentifier + "." + resourceKey);
var returnResourceStatement = SyntaxFactory.ReturnStatement(resourceReturnIdentifier).NormalizeWhitespace();
var getRescourceBlock = SyntaxFactory.Block(returnResourceStatement);
var getAccessor = SyntaxFactory.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration, getRescourceBlock).WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation);
var propertyDeclaration = SyntaxFactory.PropertyDeclaration(stringType, fieldName).AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword), SyntaxFactory.Token(SyntaxKind.StaticKeyword)).NormalizeWhitespace();
propertyDeclaration = propertyDeclaration.AddAccessorListAccessors(getAccessor).WithAdditionalAnnotations(Formatter.Annotation);
SyntaxTrivia[] leadingTrivia = field.GetLeadingTrivia().ToArray() ?? new[] { SyntaxFactory.Whitespace("\t") };
return propertyDeclaration.WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"))
.WithLeadingTrivia(leadingTrivia)
.WithAdditionalAnnotations(Simplifier.Annotation);
}
このコードはそうのようなプロパティを作成:
public static LocalResourceName
{
get{ return Resources.LocalResourceName; }
}
public static LocalResourceName =>Resources.LocalResourceName;
syntaxfactoryから式のボディプロパティを作成するにはどうしたらいいですか?誰かが私に正しい方法を教えてもらえますか?
は、これらを生成する方法を考え出すための便利なリソースです:イミディエイトウィンドウを使用して、そのリソースのhttps://roslynquoter.azurewebsites.net/ – JoshVarty
@JoshVartyおかげでとても迷惑でした –