/*
Copyright (C) 2014-2019 de4dot@gmail.com
This file is part of dnSpy
dnSpy is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
dnSpy is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with dnSpy. If not, see .
*/
namespace dnSpy.Debugger.DotNet.Metadata {
///
/// Executes methods and loads/stores fields
///
public abstract class DmdEvaluator {
///
/// Creates a new instance of a type
///
/// Evaluation context
/// Constructor
/// Arguments passed to the constructor
///
public abstract object? CreateInstance(object? context, DmdConstructorInfo ctor, object?[] arguments);
///
/// Executes a method
///
/// Evaluation context
/// Method to call
/// Instance object or null if it's a constructor or a static method
/// Arguments passed to the method
///
public abstract object? Invoke(object? context, DmdMethodBase method, object? obj, object?[] arguments);
///
/// Loads a field
///
/// Evaluation context
/// Field
/// Instance object or null if it's a static field
///
public abstract object? LoadField(object? context, DmdFieldInfo field, object? obj);
///
/// Stores a value in a field
///
/// Evaluation context
/// Field
/// Instance object or null if it's a static field
/// Value to store in the field
public abstract void StoreField(object? context, DmdFieldInfo field, object? obj, object? value);
}
}