public DbgEngineLanguageImpl(DbgModuleReferenceProvider dbgModuleReferenceProvider, string name, string displayName, DbgDotNetExpressionCompiler expressionCompiler, DbgMetadataService dbgMetadataService, IDecompiler decompiler, DbgDotNetFormatter formatter, DbgDotNetEngineValueNodeFactory valueNodeFactory, DbgDotNetILInterpreter dnILInterpreter, DbgObjectIdService objectIdService, IPredefinedEvaluationErrorMessagesHelper predefinedEvaluationErrorMessagesHelper) { if (dbgModuleReferenceProvider == null) { throw new ArgumentNullException(nameof(dbgModuleReferenceProvider)); } if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } if (valueNodeFactory == null) { throw new ArgumentNullException(nameof(valueNodeFactory)); } if (dnILInterpreter == null) { throw new ArgumentNullException(nameof(dnILInterpreter)); } if (objectIdService == null) { throw new ArgumentNullException(nameof(objectIdService)); } if (predefinedEvaluationErrorMessagesHelper == null) { throw new ArgumentNullException(nameof(predefinedEvaluationErrorMessagesHelper)); } Name = name ?? throw new ArgumentNullException(nameof(name)); DisplayName = displayName ?? throw new ArgumentNullException(nameof(displayName)); this.dbgMetadataService = dbgMetadataService ?? throw new ArgumentNullException(nameof(dbgMetadataService)); this.expressionCompiler = expressionCompiler ?? throw new ArgumentNullException(nameof(expressionCompiler)); this.decompiler = decompiler ?? throw new ArgumentNullException(nameof(decompiler)); var expressionEvaluator = new DbgEngineExpressionEvaluatorImpl(dbgModuleReferenceProvider, expressionCompiler, dnILInterpreter, objectIdService, predefinedEvaluationErrorMessagesHelper); ExpressionEvaluator = expressionEvaluator; ValueFormatter = new DbgEngineValueFormatterImpl(formatter); Formatter = new DbgEngineFormatterImpl(formatter); LocalsProvider = new DbgEngineLocalsProviderImpl(dbgModuleReferenceProvider, expressionCompiler, valueNodeFactory, dnILInterpreter); AutosProvider = new DbgEngineAutosProviderImpl(valueNodeFactory); ExceptionsProvider = new DbgEngineExceptionsProviderImpl(valueNodeFactory); ReturnValuesProvider = new DbgEngineReturnValuesProviderImpl(valueNodeFactory); TypeVariablesProvider = new DbgEngineTypeVariablesProviderImpl(valueNodeFactory); ValueNodeFactory = new DbgEngineValueNodeFactoryImpl(expressionEvaluator, valueNodeFactory, formatter); debuggerDisplayAttributeEvaluator = expressionEvaluator; }
public static void Initialize(DbgEvaluationContext context, IDebuggerDisplayAttributeEvaluator evaluator) => context.GetOrCreateData(() => evaluator);