Re[3]: решения уравнений
От: Maniac_Mansion Россия  
Дата: 15.12.05 08:15
Оценка:
Здравствуйте, tdebug, Вы писали:

T> Хм. интересная идея. Только где бы ещё почитать про написание такого? Или пример какой-нибудь глянуть... А то никогда не делал компиляции в реалтайме. В MSDN нашёл описание класса Compiler и интерфейса ICodeCompiler, это то что надо?


генерация из исходного кода sourceCode:

CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();

CompilerParameters cp = new CompilerParameters();

cp.ReferencedAssemblies.Add( "System.dll" );
//плюс еще необходимые референсы

cp.GenerateExecutable = false;

cp.GenerateInMemory = true;

CompilerResults cr = compiler.CompileAssemblyFromSource(cp, sourceCode);


далее можно у скомпиленой ассембли взять нужный класс
Type executer = cr.CompiledAssembly.GetType("MyClassFullName");

а потом через рефлекшен создать объект и выполнить неоходимый метод Calc(double x)

Только надо быть внимательным скомпиленые ассембли нельзя выгрузить из домена приложения. Можно компилировать и исполнять в другом домене, а потом выгружать уже этот домен.

про домены приложения можно посмореть здесь: http://www.rsdn.ru/article/dotnet/appdomains.xml
Автор(ы): Андрей Корявченко
Дата: 12.06.2003
Статья рассказывает о доменах приложений (Application Domains) в .NET Framework.
Приводятся примеры работы с доменами приложений, а также сравнение производительности и потребляемых ресурсов приложений, загружаемых в отдельные процессы и отдельные домены приложений, находящиеся в одном процессе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.