在运行时C#ASP.NET将属性添加到已创建的类型

在运行时C#ASP.NET将属性添加到已创建的类型,c#,asp.net,C#,Asp.net,我需要在运行时生成类及其对象。因此,看着我创造了同样的。(使用) 我正在列表中存储所有创建的类型 但现在另一个要求是向已经创建的类型添加属性 这是因为,如果我想在B类中使用A类作为属性类型,在C类中使用两者 我读了很多关于同一问题的文章,但还没有找到解决办法 任何帮助都将不胜感激 谢谢 实际上,我正在开发一个多租户应用程序,比如微软的LitwareHR 这将是一个系统,管理员可以在其中创建具有相同升级管理功能的子站点(如MS sharepoint) 除了工作流,一切都完成了 对于要存储在表中的

我需要在运行时生成类及其对象。因此,看着我创造了同样的。(使用)

我正在列表中存储所有创建的类型

但现在另一个要求是向已经创建的类型添加属性

这是因为,如果我想在B类中使用A类作为属性类型,在C类中使用两者

我读了很多关于同一问题的文章,但还没有找到解决办法

任何帮助都将不胜感激

谢谢


实际上,我正在开发一个多租户应用程序,比如微软的LitwareHR

这将是一个系统,管理员可以在其中创建具有相同升级管理功能的子站点(如MS sharepoint)

除了工作流,一切都完成了

对于要存储在表中的数据,我将其存储为XML格式

例如:


米隆
国际商用机器公司
"
从页面上的控件到事件、验证器到web部件,所有内容都是在运行时使用XSLT创建的

在这里,当我需要使用expression evaluator对其应用工作流时,挑战就来了

例如:
如果UserInfo.Name==“Miron”

所有内容都是在运行时创建的,因此必须将表信息作为对象检索


如果我不清楚,请告诉我!

是的,您可以使用所述的组合来完成此操作,但通常会使用继承向现有类型添加功能


如果没有关于如何使用这些类、如何调用它们以及如何调用这些类的更多细节,很难回答您的问题。

是的,您可以使用所描述的组合来实现这一点,但通常会使用继承向现有类型添加功能


在回答您的问题时,如果不详细说明这些类将如何使用、它们将被称为什么以及如何使用,则很难回答您的问题。

我相信您必须从单基派生类。此外,为了能够:

将say Class A用作中的属性类型 B班和C班都说

如果A类是B类的财产,你必须准备好它;A类和B类是C类的财产


如果您能在问题中添加更多信息,这将非常有帮助。

我相信您必须从单个基派生类。此外,为了能够:

将say Class A用作中的属性类型 B班和C班都说

如果A类是B类的财产,你必须准备好它;A类和B类是C类的财产


如果您可以为问题添加更多信息,这将很有帮助。

如果类型存在,那么这将变得非常棘手;您不能向现有类型添加实际属性,但是如果*检查*值的代码使用
类型描述符(大多数数据绑定都会这样做)然后,您可以通过定制的
PropertyDescriptor
s添加属性排序-通过实现
ICustomTypeDescriptor
(这要求您在构建时执行一些操作),或者
TypeDescriptionProvider

两者都是非常复杂的,并且都要求你有一个方便的地方放置额外的数据(一个属性包)

注意,在4.0中,
dynamic
在这里可能有一些用处


如果您想避免这种情况,那么只需将类型包装成看起来相似但带有额外属性的东西。这样可以在保持完整性的同时完成任务。

如果类型存在,那么这将变得非常棘手;您无法向现有类型添加实际属性,但是如果*检查*值的代码使用
类型描述符
(大多数数据绑定都是这样做的)然后您可以通过自定义
PropertyDescriptor
s添加属性排序-通过实现
ICustomTypeDescriptor
(这要求您在构建时执行一些操作),或者
TypeDescriptionProvider

两者都是非常复杂的,并且都要求你有一个方便的地方放置额外的数据(一个属性包)

注意,在4.0中,
dynamic
在这里可能有一些用处


如果您想避免这种情况,那么只需将类型包装成一些看起来相似但带有额外属性的东西。这样可以在保持完整性的同时完成任务。

到目前为止,您尝试了哪些代码?如果您发布了这些代码,可能会有人给您一些指针来纠正它。正如Oded提到的,听起来继承是一种方法。您如何决定ed哪个类将成为哪个属性?到目前为止,您尝试了哪些代码?如果您发布这些代码,可能会有人给您一些指针来更正它。正如Oded提到的,听起来继承是一种方法。您如何决定哪个类将成为哪个属性?为问题添加了更多信息!谢谢!为q添加了更多信息继续!谢谢!为问题添加了更多信息!谢谢!为问题添加了更多信息!谢谢!为问题添加了更多信息!谢谢!为问题添加了更多信息!谢谢!为问题添加了更多信息!谢谢!
<root tablename="UserInfo">
<column name=\"Name\">Miron</column>
<column name=\"Company\">IBM</column>
</root>"