public void LoadDicomFields(object obj)
{
FieldInfo[] fields = obj.GetType().GetFields();
foreach (FieldInfo field in fields) {
if (field.IsDefined(typeof(DicomFieldAttribute), true)) {
try {
DicomFieldAttribute dfa = (DicomFieldAttribute)field.GetCustomAttributes(typeof(DicomFieldAttribute), true)[0];
DcmElement elem = GetElement(dfa.Tag);
if ((elem == null || (elem.Length == 0 && dfa.UseDefaultForZeroLength)) && dfa.DefaultValue == DicomFieldDefault.None) {
// do nothing
}
else {
field.SetValue(obj, LoadDicomFieldValue(elem, field.FieldType, dfa.DefaultValue, dfa.UseDefaultForZeroLength));
}
}
catch (Exception e) {
Debug.Log.Debug("Unable to bind field: " + e.Message);
}
}
}
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (PropertyInfo property in properties) {
if (property.IsDefined(typeof(DicomFieldAttribute), true)) {
try {
DicomFieldAttribute dfa = (DicomFieldAttribute)property.GetCustomAttributes(typeof(DicomFieldAttribute), true)[0];
DcmElement elem = GetElement(dfa.Tag);
if ((elem == null || (elem.Length == 0 && dfa.UseDefaultForZeroLength)) && dfa.DefaultValue == DicomFieldDefault.None) {
// do nothing
} else {
property.SetValue(obj, LoadDicomFieldValue(elem, property.PropertyType, dfa.DefaultValue, dfa.UseDefaultForZeroLength), null);
}
}
catch (Exception e) {
Debug.Log.Debug("Unable to bind field: " + e.Message);
}
}
}
}