使用IronRuby或IronPython修改C#对象列表
如果我有一个对象列表,例如使用IronRuby或IronPython修改C#对象列表,c#,.net,export,ironpython,ironruby,C#,.net,Export,Ironpython,Ironruby,如果我有一个对象列表,例如list其中Foo有两个属性,那么我可以为每一行创建一个或多个ironruby或ironpython脚本 下面是一些伪代码: var items = new List<Foo>(); foreach(var item in items) { var pythonfunc = getPythonFunc("edititem.py"); item = pythonfunc(item); } var items=newlist(); foreach(
list
其中Foo
有两个属性,那么我可以为每一行创建一个或多个ironruby或ironpython脚本
下面是一些伪代码:
var items = new List<Foo>();
foreach(var item in items) {
var pythonfunc = getPythonFunc("edititem.py");
item = pythonfunc(item);
}
var items=newlist();
foreach(项目中的var项目){
var pythonfunc=getPythonFunc(“edititem.py”);
项目=蟒蛇(项目);
}
我需要一种动态的方式来修改代码存储在db或文件中的列表
如果您认为有更好的方法可以做到这一点,或者有其他方法可以为客户端编写自定义例程,从数据库中提取特定于客户端的数据(导出),请发表评论或留下建议
谢谢我以前使用过这种方法,将IronPython脚本保存在数据库和文件中。我喜欢的模式是使用约定的名称存储Python函数。换句话说,如果您正在处理Foo类型的对象,那么在.py文件或表中可能有一个名为“Foo_filter”的Python函数。最终,您可以执行Python文件并将函数解析到函数引用字典中 一个快速示例应用程序 您的foo类:
public class Foo {
public string Bar { get; set; }
}
设置Foo并调用getPythonFunc(i)
filter.py的内容:
def filter_item(item):
item.Bar = item.Bar.title()
基于属性应用规则的简单方法(而不是在Foo上添加Size属性):
以及filter.py的新内容
def filter_small(item):
item.Bar = item.Bar.lower()
def filter_medium(item):
item.Bar = item.Bar.title()
def filter_large(item):
item.Bar = item.Bar.upper()
我有一堆更完整的样品,可以在
def filter_item(item):
item.Bar = item.Bar.title()
var items = new List<Foo>() {
new Foo() { Bar = "connecticut", Size = "Small" },
new Foo() { Bar = "new york", Size = "Large" },
new Foo() { Bar = "new jersey", Size = "Medium" }
};
var filterFunc = scope.GetVariable("filter_" + foo.Size.ToLower());
def filter_small(item):
item.Bar = item.Bar.lower()
def filter_medium(item):
item.Bar = item.Bar.title()
def filter_large(item):
item.Bar = item.Bar.upper()