Здравствуйте, 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.
Приводятся примеры работы с доменами приложений, а также сравнение производительности и потребляемых ресурсов приложений, загружаемых в отдельные процессы и отдельные домены приложений, находящиеся в одном процессе.