我有一个看起来像这样的课:
public class Field
{
public string FieldName;
public string FieldType;
}
Run Code Online (Sandbox Code Playgroud)
并且List<Field>具有值的对象:
{"EmployeeID","int"},
{"EmployeeName","String"},
{"Designation","String"}
Run Code Online (Sandbox Code Playgroud)
我想创建一个如下所示的类:
Class DynamicClass
{
int EmployeeID,
String EmployeeName,
String Designation
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我希望在运行时生成它.我不希望物理CS文件驻留在我的文件系统中.
我要做的是使用字符串在类中设置属性的值.例如,我的类具有以下属性:
myClass.Name
myClass.Address
myClass.PhoneNumber
myClass.FaxNumber
Run Code Online (Sandbox Code Playgroud)
所有字段都是字符串类型,所以我提前知道它总是一个字符串.现在我希望能够使用字符串设置属性,就像使用DataSet对象一样.像这样的东西:
myClass["Name"] = "John"
myClass["Address"] = "1112 River St., Boulder, CO"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只想分配一个变量,然后使用变量中的字符串名称设置属性
string propName = "Name"
myClass[propName] = "John"
Run Code Online (Sandbox Code Playgroud)
我正在阅读关于反思的内容,也许是这样做的方法,但我不确定如何设置它,同时在课堂上保持属性访问不变.我想仍然可以使用
myClass.Name = "John"
Run Code Online (Sandbox Code Playgroud)
任何代码示例都非常棒.
我一直很好奇在C#中动态创建类,并且偶然发现了这篇文章.http://olondono.blogspot.com/2008/02/creating-code-at-runtime.html 我很想知道在运行时构建类的一些优点和缺点.
任何意见?
我注意到C#\为路径添加了额外的斜杠().考虑一下这条路C:\Test.当我在文本可视化器中检查带有此路径的字符串时,实际的字符串是C:\\Test.
为什么是这样?它让我感到困惑,因为有时我可能想要将路径分开(使用string.Split()),但不得不想知道使用哪个字符串(一个或两个斜杠).