我正在寻找一个关于如何通过DLR从AST到工作代码的高级概述,有没有人(链接)这样的东西?
IronPython是否已经达到了这样的程度,你可以放弃它作为CPython的替代品?
澄清:我的意思是IronPython可以运行最初为CPython编写的应用程序(当然不涉及.NET)
将C#用作.NET 3.5应用程序的嵌入式内部脚本应用程序的最佳实践是什么?我有一个带有几个小IronRuby脚本的应用程序.其中没有一个真正利用IronRuby的动态特性.
显然它违反了我们的企业标准,现在正在使用IronRuby或IronPython.Ooopps.我可以使用C#作为脚本语言的最佳方式是什么?
我喜欢IronRuby的一件事是我可以在应用程序运行时进行小的更改,然后重新运行脚本.有什么办法在C#中做到这一点?或者必须不断重启应用程序?
我正在尝试使用拦截 Python __setattr__ 和 __getattr__ 魔术方法的方法在 C# 中实现一个类。我发现了这个错误报告:
http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=8143
但那是从 2008 年开始的,我在任何地方都找不到 ICustomAttributes 或 PythonNameAttribute。我也没有在 Interfaces.cs 中看到任何有用的东西。有人可以指出我正确的方向吗?
MEF团队承诺,MEF将支持.Net 4.0中的DLR插件.它已经发生了,我可以[导入]一些IronPython对象吗?
如果是,任何指向该主题的链接都会有所帮助.
我正在尝试为我的C#应用添加插件架构.我选择了IronScheme作为语言,也因为它是基于DLR构建的,这样可以更容易嵌入.
在Codeplex Wiki上,他们有以下示例.我稍微改了一下:
public class PluggerInner
{
IScriptEngine scheme;
public PluggerInner()
{
InitScheme();
}
private void InitScheme()
{
var domMgr = ScriptDomainManager.CurrentManager;
var schemePrv = new IronSchemeLanguageProvider(domMgr);
scheme = schemePrv.GetEngine();
}
public void RunSchemePlugin(string fileName)
{
scheme.ExecuteFile(fileName);
}
public void RunPlugins()
{
foreach (var fl in new DirectoryInfo("../../plugins").GetFiles())
{
if (fl.Extension == ".ss")
{
RunSchemePlugin(fl.FullName);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
(这基本上执行为new PluggerInner().RunPlugins())
它.ss在目录中找到我的示例文件(是的,我知道我不应该使用../..),但在这一行引发了一个大错误:
scheme.ExecuteFile(fileName);
Run Code Online (Sandbox Code Playgroud)
我得到的例外是:
IronScheme.Runtime.R6RS.CompoundCondition was unhandled Source="IronScheme" …
我需要指出正确的方向.我已经将Iron Python脚本主机嵌入到一个简单的C#应用程序中,但现在我需要了解锁定用户生成的IronPython或IronRuby脚本的安全性的最佳实践.
具体来说,什么是防止库导入的策略,并且在.NET中没有办法在不同的安全上下文中运行代码块或线程,例如防止文件系统访问?此外,是否可以为此上下文分配内置级别或角色而不是实际用户?
谢谢!
我是C#4的新手,特别是dynamic关键字.我已经看过很多教程,并希望自己尝试使用VS 2012 Ultimate(MSDN).
不幸的是,我似乎找不到System.Dynamic也无法添加对它的引用.我可以知道在哪里可以找到DLL System.Dynamic以及我可能做错了什么吗?
默认情况下,VS 2012已经定位到Fx 4.5,并System.Core作为参考添加.
该dynamic关键字非常常见,因此在Google中进行搜索会产生大量不相关的结果.
我有这个代码:
static dynamic Mean (dynamic x, dynamic y)
{
return (x + y) / 2;
}
static void Main()
{
int x = 3, y = 5;
Console.WriteLine (Mean (x, y)); //this is working
}
Run Code Online (Sandbox Code Playgroud)
但是以下行在运行时崩溃:
string s = Mean (3, 5); // Runtime error!
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?
为什么s不能设置动态值?
如果是这样,为什么Console.WriteLine (...) 没有成功,与此运行动态值?
如果是的话,我该如何string s = Mean (3, 5);工作?