我有一个VB类。它很大,所以我在这里发布一个简化的例子:
Public Class ExampleClass
Public Property Foo As String
Public Property Bar As String
End Class
假设我有一个这样的文本文件:
foo,123
bar,456
我想阅读文件并相应地填充我的对象的属性。
我能想到的最简单的方法是添加一个带有case语句的方法,如下所示:
Public Class ExampleClass
Public Property Foo As String
Public Property Bar As String
Public Sub SetProperty(prop As String, val As String)
Select Case prop
Case "Foo"
Foo = val
Case "Bar"
Bar = val
End Select
End Sub
End Class
但是由于我的班级将拥有大约一百个属性,所以我的SetProperty程序将变得庞大而无聊,以便组合起来,并且可能不是最易于维护的。有更好的方法吗?
在你告诉我之前,我不应该以这种方式构建我的数据,我知道。但是,这是我必须要使用的遗留数据库表。我正在使用一些新的Entity Framework和LINQ代码更新应用程序,这将允许我删除一些非常难看的存储过程。
感谢您的帮助。
詹姆斯
答案 0 :(得分:1)
您可以通过反射找到每个对象属性
MyClass myClass = new MyClass();
System.Reflection.PropertyInfo pi = myClass.GetType().GetProperty("Foo");
if (pi != null && pi.CanWrite)
{
//Check the type before assignment...
if (pi.PropertyType.IsAssignableFrom(typeof(string)))
pi.SetValue(myClass, value, null);
}