C#运行时的动态类?

C#运行时的动态类?,c#,dynamic,C#,Dynamic,首先,我不是在说新的“动态”关键字n C#4.0.)我相信我需要走另一条路 我想要一个类,在代码/设计时,它是从一组XML文件或文件/文件夹组合等生成的。我可以通过更改外部源代码来做任何事情 使用C#是否可以实现这一点?我知道这是可能的一些设计时遵从一些隐藏的类名或东西(即每个项目的内置属性) 有没有更简单的方法?几乎像一个动态枚举?以下是我正在尝试做的: public static class MenuItems { } 在设计时,我希望根据XML文件定义添加属性(或方法/字段,如果更容易的

首先,我不是在说新的“动态”关键字n C#4.0.)我相信我需要走另一条路

我想要一个类,在代码/设计时,它是从一组XML文件或文件/文件夹组合等生成的。我可以通过更改外部源代码来做任何事情

使用C#是否可以实现这一点?我知道这是可能的一些设计时遵从一些隐藏的类名或东西(即每个项目的内置属性)

有没有更简单的方法?几乎像一个动态枚举?以下是我正在尝试做的:

public static class MenuItems
{
}
在设计时,我希望根据XML文件定义添加属性(或方法/字段,如果更容易的话)。比如:

<MenuItems>
  <Item>Homepage</Item>
  <Item>Portfolio</Item>
  <Item>About</Item>
  <Item>Contact</Item>
</MenuItem>
注意这些属性是如何在XML中定义的,并在设计时添加到类中的



提前谢谢

如果我可以将您的注意力放在,和上,可能会对您的实际问题有所帮助。

如果我可以将您的注意力放在,和上,可能会对您的实际问题有所帮助。

您可以使用来生成源代码。它受到Microsoft的良好支持,并在多个项目中使用,包括ASP.NET MVC,以及不久的ADO.NET实体框架。

您可以使用它生成源代码。它得到了Microsoft的良好支持,并被用于多个项目,包括ASP.NET MVC,以及不久的ADO.NET实体框架。

正确。这些属性创建设计时属性。我正在寻找已经完成腿部工作的人。:)花了几天时间修补我自己的解决方案,但都没有奏效……:)但你到底想做什么?我假设您希望基于角色隐藏/显示相关链接,并基于角色阻止访问。我链接的内容就是这样。如果您只考虑基于名称的样式,则可以按页面或类似内容进行。你到底想做什么?我不知道你在我最初的问题中从哪里得到了“角色”或会员资格我要求在运行时根据配置文件创建一个动态类。马特提到的T4模板确实如此;但是,必须对其进行编译,以便提前生成代码。我在寻找一些几乎是实时的东西——比如,依赖于一个xml文件,如果xml发生变化,它会生成一个新的类版本;这就是为什么我问你你到底在做什么。我将留给您使用模板解决方案,或者使用
Reflection.Emit生成一些运行时类型。但就我个人而言,我会不惜一切代价避免这种情况,并解决真正的问题。谢谢你!是的,“真正的问题”是MVC在任何地方都使用“魔法字符串”。。。没有强类型视图或重定向结果。我正在创建期货项目之外的其他扩展。对。这些属性创建设计时属性。我正在寻找已经完成腿部工作的人。:)花了几天时间修补我自己的解决方案,但都没有奏效……:)但你到底想做什么?我假设您希望基于角色隐藏/显示相关链接,并基于角色阻止访问。我链接的内容就是这样。如果您只考虑基于名称的样式,则可以按页面或类似内容进行。你到底想做什么?我不知道你在我最初的问题中从哪里得到了“角色”或会员资格我要求在运行时根据配置文件创建一个动态类。马特提到的T4模板确实如此;但是,必须对其进行编译,以便提前生成代码。我在寻找一些几乎是实时的东西——比如,依赖于一个xml文件,如果xml发生变化,它会生成一个新的类版本;这就是为什么我问你你到底在做什么。我将留给您使用模板解决方案,或者使用
Reflection.Emit生成一些运行时类型。但就我个人而言,我会不惜一切代价避免这种情况,并解决真正的问题。谢谢你!是的,“真正的问题”是MVC在任何地方都使用“魔法字符串”。。。没有强类型视图或重定向结果。我正在创建Futures项目之外的其他扩展。
部分
类可能会有所帮助。您是否正在寻找与C类似的体验?代码是为资源文件生成的?@nader:是的,几乎就是那种体验!您可以在资源中生成一个新条目,并在设计时使用ResourceManager.MyResourceName使其可用。对!<代码>部分
课程可能会有所帮助。您是否正在寻找与C类似的体验?代码是为资源文件生成的?@nader:是的,几乎就是那种体验!您可以在资源中生成一个新条目,并在设计时使用ResourceManager.MyResourceName使其可用。对很好。但是,T4模板必须生成源代码。我正在寻找一个动态的解决方案。几乎实时的更改正在生效。现在将此标记为答案。似乎我对C的要求太高了如果希望类完全在运行时生成,那么其他代码(引用该类的成员)应该如何编译?或者IDE从何处获得显示IntelliSense提示所需的信息?我认为您不能--运行时不能。我认为这个问题的标题可能有误。问题的主体描述的是编译时特性,而不是运行时特性。非常好。但是,T4模板必须生成源代码。我正在寻找一个动态的解决方案。几乎实时的更改正在生效。现在将此标记为答案。似乎我对C的要求太高了如果希望类完全在运行时生成,那么其他代码(引用该类的成员)应该如何编译?或者IDE从何处获得显示IntelliSense提示所需的信息?我认为您不能--运行时不能。我认为这个问题的标题可能有误。问题的主体描述的是编译时特性,而不是运行时o
if (page.ToString == MenuItems.Homepage)...
if (page.ToString == MenuItems.Portfolio)...