在我的C#应用程序中,我有一个例如对象。属性Color
和Size
,并从db值填充它。如何从动态创建的类获取对象的实例
然后,我有一个设计者应用程序,允许用户当应用程序运行添加C#/ VB代码(一整类的具体方法),其可以或可以不从该对象的属性
使用/变化值类将由设计器应用程序创建的字符串在内存中创建(codeprovider),并在运行时创建一个名为(反射)的特定方法
如何允许动态代码的方法引用我的对象(非静态并从用户特定数据),以便如果用户添加了代码,例如:
if(TheObject.Color == "Blue")
TheObject.Width="150";
我可以得到它,如果我通过对象的方法在动态类作为输入参数的工作:
....
ocResults = oCodeProvider,CompileAssemblyFromSource(oCParams, userCode);
oAssy = oCResults.CompiledAssembly;
oExecInstance = oAssy.CreateInstance("userClass");
oType = oExecInstance.GetType();
oType.GetMethod("OnLoad", new Type[] { typeof(myObj) });
,但无法弄清楚在何处放置对象,以使动态代码可以参考它(动态代码将为每个用户生成并执行,但它们必须引用为其会话创建的对象。
该用户的代码应该很容易编写,而不必从一个例如。静态Dictionary<String,Object>
(通过用户代码AppDic["UserName"].Color
引用),然后在执行动态代码时从字典中再次将其删除。
用户代码应该只是:TheObject.Color
(就像一个静态方法,因为用户代码不需要创建实例,创建动态代码的代码已经填充了属性值,用户只能够变化/读取);
任何人都可以帮忙吗?
请正确格式化代码。另外,你问什么语言? – Robert 2010-12-15 07:22:59
更新的问题 – DeWet 2010-12-15 12:31:19
'TheObject'该死!我有这个名字上课。 – Andrey 2010-12-16 20:50:57