Tôi cố gắng đặt thuộc tính Nullable <> động.Đặt thuộc tính Nullable <> bằng cách phản chiếu
I Get cựu tài sản của tôi:
PropertyInfo property = class.GetProperty("PropertyName"); // My property is Nullable<> at this time So the type could be a string or int
Tôi muốn thiết lập tài sản của tôi bằng cách phản chiếu như
property.SetValue(class,"1256",null);
Nó không hoạt động khi tài sản của tôi là một Nullable <> Chung. Vì vậy, tôi cố gắng tìm một cách để thiết lập tài sản của tôi.
Để biết loại của tôi nullable <> tài sản i thực hiện
Nullable.GetUnderlyingType(property.PropertyType)
Bất kỳ ý tưởng?
tôi Hãy cố gắng tạo một thể hiện của tôi Nullable <> tài sản với
var nullVar = Activator.CreateInstance (typeof (Nullable <>). MakeGenericType (Type mới [] {Nullable.GetUnderlyingType (bất động sản .PropertyType)}));
Nhưng nullVar luôn là Null
Tính năng này có hoạt động khi bạn đặt số nguyên thay vì chuỗi không? '" 1256 "' là một chuỗi, không phải là số nguyên. –
Nó sẽ làm việc, nhưng quan điểm là tôi không biết loại tài sản nullable. Tôi có thể sử dụng Nullable.GetUnderlyingType (property.PropertyType) để có được kiểu –
'Nullable <>' không thể sử dụng 'string' cho kiểu cơ bản là' string' là một kiểu tham chiếu. Nói cách khác 'typeof (Nullable <>). MakeGenericType (t);' sẽ ổn nếu 't == typeof (int)', nhưng nó sẽ phát nổ (ràng buộc không được đáp ứng) với 't == typeof (string)' . Vì vậy, 'Nullable <>' sẽ không có bất kỳ cách nào hoạt động như một loại "kiểu phổ biến" cho các kiểu tham chiếu và các kiểu giá trị rỗng. –