# CodePlay 接口和类型定义 ## 命名空间概览 ### CodePlay.Core.Common 包含公共枚举类型。 ### CodePlay.Core.Models 包含数据模型类。 ### CodePlay.Core.Interfaces 包含核心接口定义。 ## 枚举类型 ### LanguageType 定义支持的编程语言。 ```csharp public enum LanguageType { None = 0, // 未指定 CSharp = 1, // C# Java = 2, // Java CPlusPlus = 3 // C++ } ``` ### ConversionStatus 定义转换任务的状态。 ```csharp public enum ConversionStatus { Pending = 0, // 等待中 InProgress = 1, // 进行中 Completed = 2, // 已完成 PartiallyCompleted = 3, // 部分完成(需要人工检查) Failed = 4, // 失败 Cancelled = 5 // 已取消 } ``` ### ProjectStatus 定义项目的状态。 ```csharp public enum ProjectStatus { InProgress = 0, // 进行中 Completed = 1, // 已完成 Verified = 2, // 已验证 Archived = 3 // 已归档 } ``` ### ValidationResult 定义验证结果的状态。 ```csharp public enum ValidationResult { NotValidated = 0, // 未验证 Passed = 1, // 验证通过 Failed_NeedsManualReview = 2, // 验证失败 - 需要人工检查 Failed_CompilationError = 3, // 验证失败 - 编译错误 Failed_TestFailed = 4 // 验证失败 - 测试失败 } ``` ### SyntaxNodeType 定义语法节点的类型。 ```csharp public enum SyntaxNodeType { Unknown = 0, CompilationUnit = 1, // 编译单元 Namespace = 2, // 命名空间 Class = 3, // 类 Interface = 4, // 接口 Method = 5, // 方法 Property = 6, // 属性 Field = 7, // 字段 Constructor = 8, // 构造函数 Statement = 9, // 语句 Expression = 10, // 表达式 Type = 11, // 类型 Parameter = 12, // 参数 Comment = 13, // 注释 DocumentationComment = 14 // 文档注释 } ``` ### CommentType 定义注释的类型。 ```csharp public enum CommentType { SingleLine = 0, // 单行注释 // MultiLine = 1, // 多行注释 /* */ XmlDoc = 2, // XML 文档注释 /// JavaDoc = 3, // JavaDoc /** */ Doxygen = 4 // Doxygen /// 或 /** */ } ``` ### DocFormat 定义文档格式。 ```csharp public enum DocFormat { XmlDoc = 0, // C# XML Doc JavaDoc = 1, // Java JavaDoc Doxygen = 2 // C++ Doxygen } ``` ### IssueType 定义转换问题的类型。 ```csharp public enum IssueType { UnconvertibleSyntax = 0, // 不可转换语法 TypeMappingWarning = 1, // 类型映射警告 ApiDifference = 2, // API 差异 SemanticDifference = 3, // 语义差异 PerformanceConsideration = 4 // 性能考虑 } ``` ### LogLevel 定义日志级别。 ```csharp public enum LogLevel { Info = 0, Warning = 1, Error = 2, Debug = 3 } ``` ## 核心模型类 ### ConversionRequest 转换请求模型。 ```csharp public class ConversionRequest { public string SourceCode { get; set; } public LanguageType SourceLanguage { get; set; } public LanguageType TargetLanguage { get; set; } public string? ProjectId { get; set; } public int ValidationRounds { get; set; } = 2; public ConversionOptions? Options { get; set; } } ``` ### ConversionOptions 转换配置选项。 ```csharp public class ConversionOptions { public bool KeepComments { get; set; } = true; public bool KeepDocStrings { get; set; } = true; public bool KeepFormatting { get; set; } = true; public int IndentSize { get; set; } = 4; public bool UseTabs { get; set; } = false; public bool EnableAutoFix { get; set; } = true; } ``` ### ConversionResult 转换结果模型。 ```csharp public class ConversionResult { public bool Success { get; set; } public string TransformedCode { get; set; } public ConversionReport? Report { get; set; } public List Warnings { get; set; } public ValidationSummary? ValidationSummary { get; set; } public string? ErrorMessage { get; set; } } ``` ### ConversionReport 转换报告。 ```csharp public class ConversionReport { public int LinesConverted { get; set; } public int ClassesConverted { get; set; } public int MethodsConverted { get; set; } public TimeSpan Duration { get; set; } public List Issues { get; set; } public List TransformationLog { get; set; } public List TodoItems { get; set; } } ``` ### ConversionWarning 转换警告。 ```csharp public class ConversionWarning { public string Code { get; set; } public string Message { get; set; } public int LineNumber { get; set; } public int ColumnNumber { get; set; } public string? Suggestion { get; set; } } ``` ### ValidationSummary 验证摘要。 ```csharp public class ValidationSummary { public bool Passed { get; set; } public int RoundsExecuted { get; set; } public bool NeedsManualReview { get; set; } public List CompilationErrors { get; set; } public List ValidationLog { get; set; } } ``` ### ConversionIssue 转换问题。 ```csharp public class ConversionIssue { public IssueType Type { get; set; } public string Description { get; set; } public int LineNumber { get; set; } public string? OriginalCode { get; set; } public string? Suggestion { get; set; } } ``` ### TransformationLog 转换日志。 ```csharp public class TransformationLog { public DateTime Timestamp { get; set; } public string Operation { get; set; } public string Details { get; set; } public LogLevel Level { get; set; } } ``` ### TodoItem TODO 项(用于不可转换的语法)。 ```csharp public class TodoItem { public string Description { get; set; } public int LineNumber { get; set; } public string OriginalSyntax { get; set; } public string WhyNotDirect { get; set; } public string RecommendedAlternative { get; set; } public string? ReferenceLocation { get; set; } } ``` ### CompilationError 编译错误。 ```csharp public class CompilationError { public string ErrorId { get; set; } public string Message { get; set; } public int LineNumber { get; set; } public int ColumnNumber { get; set; } public bool IsError { get; set; } = true; } ``` ### Project 项目模型。 ```csharp public class Project { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Name { get; set; } public LanguageType SourceLanguage { get; set; } public LanguageType TargetLanguage { get; set; } public ProjectStatus Status { get; set; } public DateTime CreatedAt { get; set; } public DateTime UpdatedAt { get; set; } public List Tasks { get; set; } public ProjectConfiguration? Configuration { get; set; } } ``` ### ConversionTask 转换任务。 ```csharp public class ConversionTask { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string SourceFilePath { get; set; } public string TargetFilePath { get; set; } public string? SourceCode { get; set; } public string? TransformedCode { get; set; } public ConversionStatus Status { get; set; } public DateTime CreatedAt { get; set; } public DateTime? CompletedAt { get; set; } public ConversionResult? Result { get; set; } } ``` ### ProjectConfiguration 项目配置。 ```csharp public class ProjectConfiguration { public int ValidationRounds { get; set; } = 2; public bool EnableAutoFix { get; set; } = true; public bool KeepComments { get; set; } = true; public bool KeepDocStrings { get; set; } = true; public int IndentSize { get; set; } = 4; public string? OutputDirectory { get; set; } } ``` ## 语法树模型 ### SyntaxTree 语法树模型。 ```csharp public class SyntaxTree { public LanguageType Language { get; set; } public SyntaxNode Root { get; set; } public string? SourceFilePath { get; set; } public string? SourceCode { get; set; } public List Comments { get; set; } public List Documentation { get; set; } } ``` ### SyntaxNode 语法节点。 ```csharp public class SyntaxNode { public SyntaxNodeType Type { get; set; } public string Text { get; set; } public List Children { get; set; } public Dictionary Metadata { get; set; } public SyntaxNode? Parent { get; set; } public bool IsUnconvertible { get; set; } public string? TodoDescription { get; set; } } ``` ### SyntaxComment 语法注释。 ```csharp public class SyntaxComment { public CommentType Type { get; set; } public string Text { get; set; } public int LineNumber { get; set; } } ``` ### SyntaxDocumentation 语法文档。 ```csharp public class SyntaxDocumentation { public string ElementName { get; set; } public string Content { get; set; } public DocFormat Format { get; set; } } ``` ## 核心接口 ### IParser 语言解析器接口。 ```csharp public interface IParser { Task ParseAsync(string sourceCode, CancellationToken cancellationToken = default); } ``` **实现**: - `BaseParser` - 抽象基类 - `CSharpParser` - C# 解析器 ### IConverter 代码转换器接口。 ```csharp public interface IConverter { Task ConvertAsync( SyntaxTree syntaxTree, LanguageType targetLanguage, ConversionOptions? options = null, CancellationToken cancellationToken = default); } ``` **实现**: - `CSharpToJavaConverter` - C# → Java 转换器 ### ICodeGenerator 代码生成器接口。 ```csharp public interface ICodeGenerator { string Generate(SyntaxTree syntaxTree); } ``` **实现**: - `JavaCodeGenerator` - Java 代码生成器 ### IConversionStrategy 转换策略接口。 ```csharp public interface IConversionStrategy { LanguageType SourceLanguage { get; } LanguageType TargetLanguage { get; } SyntaxNode ConvertNode(SyntaxNode node, ConversionContext context); string MapType(string sourceType); } ``` **实现**: - `CSharpToJavaStrategy` - C# → Java 转换策略 ### ICompilerValidator 编译验证器接口。 ```csharp public interface ICompilerValidator { Task ValidateAsync(string code, LanguageType language, CancellationToken cancellationToken = default); } ``` ### IAutoFixEngine 自动修复引擎接口。 ```csharp public interface IAutoFixEngine { Task FixAsync(string code, List errors, int round, CancellationToken cancellationToken = default); } ``` ## 辅助类 ### TypeMapping 类型映射。 ```csharp public class TypeMapping { public string SourceType { get; set; } public string TargetType { get; set; } } ``` ### ConversionContext 转换上下文。 ```csharp public class ConversionContext { public LanguageType SourceLanguage { get; set; } public LanguageType TargetLanguage { get; set; } public ConversionOptions? Options { get; set; } public List Issues { get; set; } public List TodoItems { get; set; } public List Logs { get; set; } } ``` ### FixResult 修复结果。 ```csharp public class FixResult { public bool CanFix { get; set; } public string? FixedCode { get; set; } public string? FixDescription { get; set; } public List RemainingErrors { get; set; } } ``` ### CompilationResult 编译结果。 ```csharp public class CompilationResult { public bool Success { get; set; } public string Output { get; set; } public List Errors { get; set; } public List Warnings { get; set; } } ``` ## API DTO 类 ### LanguagePairDto 语言对数据传输对象。 ```csharp public class LanguagePairDto { public string SourceLanguage { get; set; } public string TargetLanguage { get; set; } public bool Supported { get; set; } } ``` ## 使用示例 ### 创建转换请求 ```csharp var request = new ConversionRequest { SourceCode = "public class Test { }", SourceLanguage = LanguageType.CSharp, TargetLanguage = LanguageType.Java, ValidationRounds = 2, Options = new ConversionOptions { KeepComments = true, KeepDocStrings = true } }; ``` ### 使用转换服务 ```csharp var service = new ConversionService(); var result = await service.ConvertAsync(request); if (result.Success) { Console.WriteLine(result.TransformedCode); } ``` ### 检查转换支持 ```csharp if (service.IsConversionSupported(LanguageType.CSharp, LanguageType.Java)) { Console.WriteLine("C# to Java conversion is supported"); } ```