我需要在运行时生成类及其对象。因此,看this article我创造了同样的东西。 (使用)
我将所有创建的类型存储在列表中。
但现在另一个要求是为已创建的类型添加属性。
这是因为,如果我想使用A类作为B类中的属性类型,并在C类中说两者。
我在同一篇文章上阅读了很多文章,但尚未找到解决方案
任何帮助将不胜感激。
由于
实际上,我正在开发Microsoft的LitwareHR等多租户应用程序。
这将是一个系统,管理员可以使子网站具有相同的升级管理功能(如MS sharepoint)
除工作流程外,一切都已完成!
对于要存储在表中的数据,我将其以XML格式存储..
例如:
<root tablename="UserInfo">
<column name=\"Name\">Miron</column>
<column name=\"Company\">IBM</column>
</root>"
使用XSLT在运行时创建从页面上的控件到事件,验证器到Web部件的所有内容。
在这里,当我需要使用表达式评估程序将工作流应用于它时,就会遇到挑战。
例如:If UserInfo.Name == "Miron"
所有内容都在运行时创建,因此必须将表信息检索为对象。
如果我不清楚,请告诉我!
答案 0 :(得分:4)
如果存在类型,那么这将变得非常棘手;您无法将实际属性添加到现有类型,但如果*检查*值的代码使用TypeDescriptor
(大多数数据绑定 )然后,您可以通过自定义PropertyDescriptor
添加属性排序 - 通过实施ICustomTypeDescriptor
(这要求您在构建时执行某些操作)或TypeDescriptionProvider
。< / p>
两者都非常复杂,并且两者都要求你有一些方便放置额外数据(属性包)。
请注意,在4.0中,dynamic
可能会有一些用处。
如果你想避免这种情况,那么只需将类型包装在看起来相似但具有额外属性的东西中。它会在保持理智的同时完成工作。
答案 1 :(得分:0)
是的,您可以按照您的描述使用Composition来执行此操作,但通常会使用继承来为现有类型添加功能。
如果没有关于如何使用这些类,将要调用它们以及如何使用它们的更多详细信息,很难回答您的问题。
答案 2 :(得分:0)
我相信你必须从单一基础派生你的课程。另外,能够:
使用说A类作为属性输入 B级并在C组中说两者。
如果是A的财产,你必须准备A级; A类和B类准备好成为C类的财产。
如果您可以在问题中添加更多信息,将会很有帮助。