मैं कुछ दिनों पहले टेकएड में था, और मैंने this talk by Kevin Pilch-Bisson (relevent part starts at about 18 minutes) देखा ... मैंने सोचा कि बहुत अच्छा था, इसलिए मैंने रोज़लिन के साथ खेलने का फैसला किया। -Roslyn CodeFixProvider का उपयोग कर विधि में एक्सेस संशोधक जोड़ें?
मैं एक नियम "प्रवेश संशोधक घोषित किया जाना चाहिए" बनाने के लिए कोशिश कर रहा हूँ (StyleCop SA1400) जिसका अर्थ है,
यह नियम का उल्लंघन करती है:
static void Main(string[] args)
{
}
यह ठीक है:
public static void Main(string[] args)
{
}
यह एक स्पष्ट आंतरिक कीवर्ड, सार्वजनिक कीवर्ड, निजी कीवर्ड या समर्थक होना आवश्यक है tected कीवर्ड।
उल्लंघन का पता लगाना काफी आसान था, लेकिन अब मैं एक फिक्स प्रदान करने की कोशिश कर रहा हूं। मैं चीजों की कोशिश कर रहा हूं और हर जगह खोज रहा हूं, लेकिन मुझे यह नहीं पता कि एक्सेस संशोधक कैसे जोड़ सकते हैं।
public async Task<IEnumerable<CodeAction>> GetFixesAsync(Document document, TextSpan span, IEnumerable<Diagnostic> diagnostics, CancellationToken cancellationToken)
{
var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
var token = root.FindToken(span.Start);
var methodDeclaration = token.Parent as MethodDeclarationSyntax;
//var newModifiers = methodDeclaration.Modifiers.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.PublicKeyword));
//var newModifiers = new SyntaxTokenList() { new SyntaxToken() };
MethodDeclarationSyntax newMethodDeclaration = methodDeclaration.WithModifiers(methodDeclaration.Modifiers);
var newRoot = root.ReplaceNode(methodDeclaration, newMethodDeclaration);
var newDocument = document.WithSyntaxRoot(newRoot);
return new[] { CodeAction.Create("Add Public Keyword", newDocument) };
}
WithModifiers
की जरूरत है एक SyntaxTokenList
, जो मैं नया(), लेकिन मैं कैसे SyntaxKind.PublicKeyword
की इसे बनाने के लिए पता नहीं है कर सकते हैं:
यह वही है मैं अब तक है। मुझे यह भी यकीन नहीं है कि क्या मुझे यह भी नया लगता है, या SyntaxFactory
का उपयोग करें। हालांकि, जब SyntaxFactory
का उपयोग कर, मैं भी समझ नहीं कि कौन सी विधि मैं SyntaxKind.PublicKeyword
के SyntaxToken
बनाने के लिए मैं ब्याज हो, तो DiagnosticAnalyzer
सहित पूरे बात पोस्ट कर सकते हैं की जरूरत है ...
मुझे अच्छा लगता है, सिवाय इसके कि आपके पास एक अप्रयुक्त स्थानीय "सार्वजनिक टोकनलिस्ट" है। आपके Func को पूर्वावलोकन बनाने के साथ ही क्लिक करने के लिए बुलाया जाएगा, लेकिन यह ठीक होना चाहिए। –
ठीक है धन्यवाद :) हाँ भूल गए publicTokenList, आमतौर पर resharper मुझे उन लोगों के बारे में बताता है, लेकिन जब से मैं बनाम 14 में काम कर रहा था, यह नहीं था .. –