Dicom.Data.DcmDataset.SaveDicomFieldValue C# (CSharp) Méthode

SaveDicomFieldValue() private méthode

private SaveDicomFieldValue ( Dicom.Data.DicomTag tag, object value, bool createEmpty ) : void
tag Dicom.Data.DicomTag
value object
createEmpty bool
Résultat void
        private void SaveDicomFieldValue(DicomTag tag, object value, bool createEmpty)
        {
            if (value != null && value != DBNull.Value) {
                Type vtype = value.GetType();
                if (vtype.IsSubclassOf(typeof(DcmElement))) {
                    AddItem((DcmItem)value);
                } else {
                    if (!Contains(tag)) {
                        AddElement(tag, tag.Entry.DefaultVR);
                    }
                    DcmElement elem = GetElement(tag);
                    if (vtype.IsArray) {
                        if (vtype.GetElementType() != elem.GetValueType())
                            throw new DicomDataException("Invalid binding type for Element VR!");
                        if (elem.GetValueType() == typeof(DateTime))
                            (elem as DcmDateElementBase).SetDateTimes((DateTime[])value);
                        else
                            elem.SetValueObjectArray((object[])value);
                    } else {
                        if (elem.VR == DicomVR.UI && vtype == typeof(DicomUID)) {
                            DicomUID ui = (DicomUID)value;
                            elem.SetValueString(ui.UID);
                        } else if (elem.VR == DicomVR.UI && vtype == typeof(DicomTransferSyntax)) {
                            DicomTransferSyntax ts = (DicomTransferSyntax)value;
                            elem.SetValueString(ts.UID.UID);
                        }
                        else if (vtype == typeof(DcmDateRange) && elem.GetType().IsSubclassOf(typeof(DcmDateElementBase))) {
                            DcmDateRange dr = (DcmDateRange)value;
                            (elem as DcmDateElementBase).SetDateTimeRange(dr);
                        } else if (vtype != elem.GetValueType()) {
                            if (vtype == typeof(string)) {
                                elem.SetValueString((string)value);
                            } else
                                throw new DicomDataException("Invalid binding type for Element VR!");
                        } else {
                            elem.SetValueObject(value);
                        }
                    }
                }
            } else {
                if (Contains(tag)) {
                    GetElement(tag).ByteBuffer.Clear();
                } else if (createEmpty) {
                    AddElement(tag, tag.Entry.DefaultVR);
                }
            }
        }