Exemple #1
0
 public static IEnumerable <DicomPropertyInfo> GetDicomProperties(DicomPropertyInfo parent, Type type)
 {
     foreach (var property in type.GetProperties())
     {
         var dicomProperty           = new DicomPropertyInfo(parent, property);
         var dicomAttributeAttribute = property.GetCustomAttribute <DicomAttributeAttribute>();
         if (dicomAttributeAttribute != null)
         {
             dicomProperty.DicomAttribute = new DicomAttribute(property.Name, dicomAttributeAttribute.Tag, dicomAttributeAttribute.VR);
             yield return(dicomProperty);
         }
         else
         {
             var dicomAttributeField = typeof(DicomAttribute).GetField(property.Name, BindingFlags.Public | BindingFlags.Static);
             if (dicomAttributeField != null)
             {
                 dicomProperty.DicomAttribute = (DicomAttribute)dicomAttributeField.GetValue(null);
                 yield return(dicomProperty);
             }
             else
             {
                 var count = 0;
                 foreach (var descendant in GetDicomProperties(dicomProperty, property.PropertyType))
                 {
                     count++;
                     yield return(descendant);
                 }
                 if (count == 0)
                 {
                     throw new NotSupportedException($"{dicomProperty} is not a known DICOM attribute");
                 }
             }
         }
     }
 }
Exemple #2
0
 private DicomPropertyInfo(DicomPropertyInfo parent, PropertyInfo property)
 {
     Parent   = parent;
     Property = property;
 }