Tôi có tệp chứa một số biến của một lớp và mỗi dòng là một cặp: biến, giá trị. Tôi đang tìm một cách để tải những lúc chạy (a-la XmlSerializer
), bằng cách sử dụng sự phản ánh.C# Chuỗi phân tích cú pháp để nhập được biết tại thời gian chạy
Có cách nào để phân tích cú pháp string
thành một Type
chỉ được biết khi chạy không?
Sau đây là một mẫu mã mơ tưởng nơi dòng cuối cùng (với pi.SetValue()
là không đúng, bởi vì PropertyType
là của lớp Type
mà không có một Parse()
generic method.
using (var sr = new StreamReader(settingsFileName))
{
String line;
while ((line = sr.ReadLine()) != null)
{
String[] configValueStrs = line.Trim().Split(seps);
PropertyInfo pi = configurableProperties
.Single(p => p.Name == configValueStrs[0].Trim());
//How do I manage this?
pi.SetValue(this, pi.PropertyType.Parse(configValueStrs[1].Trim()), null);
}
}
Kể từ khi tất cả các liên quan biến là Ints, Doubles, Strings hoặc Booleans, như là phương sách cuối cùng, tôi có thể bật kiểu và sử dụng phương thức ToType()
tương ứng, nhưng tôi đặt cược là một giải pháp thanh lịch hơn.
Kiểm tra này: http: //chrismarinos.com/default-typeconverters-and-objects/ Cũng theo kinh nghiệm của riêng tôi, việc triển khai mặc định không thể làm gì cả. – Peter