using CodePlay.Core.Interfaces; using CodePlay.Core.Models; using CodePlay.Core.Common; namespace CodePlay.Core.Converters; public class JavaToCSharpConverter : IConverter { private readonly JavaToCSharpStrategy _strategy; private readonly CSharpCodeGenerator _generator; public JavaToCSharpConverter() { _strategy = new JavaToCSharpStrategy(); _generator = new CSharpCodeGenerator(); } public async Task ConvertAsync(SyntaxTree syntaxTree, LanguageType targetLanguage, ConversionOptions? options = null, CancellationToken cancellationToken = default) { var result = new ConversionResult { Success = false, Report = new ConversionReport() }; if (targetLanguage != LanguageType.CSharp) { result.ErrorMessage = "仅支持 Java -> C# 转换"; return result; } try { var context = new ConversionContext { SourceLanguage = LanguageType.Java, TargetLanguage = LanguageType.CSharp, Options = options }; var convertedRoot = _strategy.ConvertNode(syntaxTree.Root, context); var convertedTree = new SyntaxTree { Language = LanguageType.CSharp, Root = convertedRoot, SourceCode = syntaxTree.SourceCode }; result.TransformedCode = _generator.Generate(convertedTree); result.Success = true; result.Report.LinesConverted = syntaxTree.SourceCode?.Split('\n').Length ?? 0; } catch (Exception ex) { result.ErrorMessage = ex.Message; } return await Task.FromResult(result); } }