Вы немного путаете использование атрибутов.DicomFiledAttribute - это атрибут .NET, который можно поместить в члены класса, чтобы класс автоматически заполнялся значениями из DicomAttributeCollection или чтобы класс автоматически заполнялся значениями из коллекции DicomAttribute.То есть, если у вас есть такой тестовый класс:
public class TestClass
{
[DicomField(DicomTags.SopClassUid, DefaultValue = DicomFieldDefault.Default)]
public DicomUid SopClassUid = null;
[DicomField(DicomTags.SopInstanceUid, DefaultValue = DicomFieldDefault.Default)]
public DicomUid SOPInstanceUID = null;
[DicomField(DicomTags.StudyDate, DefaultValue = DicomFieldDefault.Default)]
public DateTime StudyDate;
}
Вы можете заполнить экземпляр класса следующим образом:
DicomFile file = new DicomFile("filename.dcm");
file.Load();
TestClass testInstance = new TestClass();
file.DataSet.LoadDicomFields(testInstance);
// testInstance should now be populated with the values from file
Если вы хотите просто заполнить некоторые теги DICOM,в DicomAttributeCollection есть индексатор.Индексатор автоматически создаст экземпляр DicomAttribute, если он еще не существует, для тега, запрошенного через индексатор.Итак, чтобы заполнить значение, вы можете сделать что-то вроде этого:
DicomFile file = new DicomFile("filename.dcm");
file.DataSet[DicomTags.SopInstanceUid].SetStringValue("1.1.1");
Если вы хотите создать DicomAttribute самостоятельно, вы можете сделать что-то вроде этого:
DicomAttribute attrib = new DicomAttributeUI(DicomTags.SopInstanceUid);
attrib.SetStringValue("1.1.1");
DicomFile file = new DicomFile("filename.dcm");
file.DataSet[DicomTags.SopInstanceUid] = attrib;