C#如何创建没有类定义的对象?

时间:2010-05-14 12:22:02

标签: c#

是否可以在设计时创建对象而无需使用硬编码类定义,然后使用基元或甚至强类型数据类型填充属性?

这可能听起来令人困惑,因此我将尝试为您提供一个用例场景。

使用案例

您有一个XML配置文件,可以保存用于连接SOA应用程序中各种系统的配置值。在C#中,读取XML文件,但是对于每个系统,配置属性都不同(例如:SQL可能有连接字符串,而SharePoint可能需要用户名+密码+域+ url,而smtp服务器则会需要用户名+密码+端口+网址)

所以不要按如下方式创建静态类

public class SharePointConfigurationpublic class SQLConfiguration,然后每个类都有自定义属性(这很麻烦)

使用1990年的方法,ArrayList或一些命名的集合

有没有更优选的方法来实现这一目标?利用新的语言功能,仍然可以提供设计时智能感知,这将使代码更容易维护,更不容易出错。

我想我正在寻找某种多用途的.net 4财产权持有人。 感谢

4 个答案:

答案 0 :(得分:1)

如果要在运行时发出代码?

结帐Reflection.Emit namespace
或者更好的是 RunSharp - nicer API

答案 1 :(得分:1)

使用PropertyBag的示例实现。
如果属性不存在,请立即创建...

http://www.codeproject.com/KB/recipes/propertybag.aspx

答案 2 :(得分:1)

您想要的是基于架构的XML。这将为您提供IntelliSense,包括代码片段,同时提供灵活性。

答案 3 :(得分:0)

根据你的问题(并假设我正确阅读),这是不可能的。你可以得到的最接近的是使用'dynamic'类型并在运行时将值分配给属性 - 问题在于,动态没有Intellisense支持,甚至使用其他类型的解决方案,Intellisense也不会可用,因为属性只能在运行时附加。

我对你的要求感到困惑吗?