A delegate used with some overloads of GetValue<T> to get a value of an element
public delegate object GetValueDelegate(string value)
public delegate Object^ GetValueDelegate(String^ value)
value
a string representation of the DICOM element value that is to be converted
An Object of the desired type.
This delegate is used with certain overloads of GetValue<T>.
The delegate takes a string as input, and converts it into any desired class type. It is used with the GetValue<T> that take GetValueDelegate parameter.
This example will retrieve a value from a data set as a PersonName type using a delegate
using Leadtools;using Leadtools.Dicom;///public class PersonName{private string[] _innerArray = new string[5] {string.Empty, string.Empty, string.Empty, string.Empty,string.Empty };/// Access this person name instance as array. Index range is/// bounded between 0 (family name) and 4 (name suffix).public string this[int index]{set{if (value == null || value.Length < 64)_innerArray[index] = value;elsethrow new DicomException("Length of new entry exceeds 64 characters.");}get { return _innerArray[index]; }}private const int _familyNameIndex = 0;private const int _givenNameIndex = 1;private const int _middleNameIndex = 2;private const int _namePrefixIndex = 3;private const int _nameSuffixIndex = 4;/// Access person name part family name.public string FamilyName{set{if (value == null || value.Length < 64){_fullName = null;_innerArray[_familyNameIndex] = value;}elsethrow new DicomException("Length of family name exceeds 64 characters.");}get { return _innerArray[_familyNameIndex]; }}/// Access person name part given name.public string GivenName{set{if (value == null || value.Length < 64){_fullName = string.Empty;_innerArray[_givenNameIndex] = value;}elsethrow new DicomException("Length of family name exceeds 64 characters.");}get { return _innerArray[_givenNameIndex]; }}/// Access person name part middle name.public string MiddleName{set{if (value == null || value.Length < 64){_fullName = string.Empty;_innerArray[_middleNameIndex] = value;}elsethrow new DicomException("Length of family name exceeds 64 characters.");}get { return _innerArray[_middleNameIndex]; }}/// Access person name part name prefix.public string NamePrefix{set{if (value == null || value.Length < 64){_fullName = string.Empty;_innerArray[_namePrefixIndex] = value;}elsethrow new DicomException("Length of family name exceeds 64 characters.");}get { return _innerArray[_namePrefixIndex]; }}/// Access person name part name suffix.public string NameSuffix{set{if (value == null || value.Length < 64){_fullName = string.Empty;_innerArray[_nameSuffixIndex] = value;}elsethrow new DicomException("Length of family name exceeds 64 characters.");}get { return _innerArray[_nameSuffixIndex]; }}private string _fullName = string.Empty;/// Access full person name string representation. According/// to the DICOM standard "^" is used as separator of different/// person name parts.public string FullName{set{_fullName = value;if (_fullName != null){string[] s;int i;if (_fullName.Contains("^"))s = _fullName.Split('^');elses = _fullName.Split(' ');for (i = 0; i < s.Length; i++){if (s[i].Length < 64){if (i < _innerArray.Length)_innerArray[i] = s[i];}elsethrow new DicomException("Length of family name exceeds 64 characters.");}for (int k = i; k < _innerArray.Length; k++)_innerArray[k] = string.Empty;}}get{if (_fullName == string.Empty){_fullName = _innerArray[0];bool isNotNull = _fullName != string.Empty;int i = 1;while (isNotNull && i < _innerArray.Length){isNotNull = _innerArray[i] != string.Empty;if (isNotNull)_fullName += "^" + _innerArray[i];i++;}}return _fullName;}}/// Creates a new empty person name instance.public PersonName() { }/// Creates a new person name instance from specified full name./// All person name parts have to be separated by "^" according to/// the DICOM standard.public PersonName(string fullName){FullName = fullName;}/// Creates a new person name instance from the different person name parts.public PersonName(string familyName, string givenName,string middleName, string namePrefix, string nameSuffix){FamilyName = familyName;GivenName = givenName;MiddleName = middleName;NamePrefix = namePrefix;NameSuffix = nameSuffix;}/// Return this person name instance's.public override string ToString(){return FullName;}}void DumpPersonName(PersonName pn){String sMsg =string.Format("Family Name: {0}\nGiven Name: {1}\nMiddle Name: {2}\nName Prefix: {3}\nName Suffix: {4}",pn.FamilyName,pn.GivenName,pn.MiddleName,pn.NamePrefix,pn.NameSuffix);Console.WriteLine(sMsg);}private void DicomDataSet_GetValueWithDelegateExample(){// Create a DicomDataSet and add a PatientName// Dicom Spec for Value Representation PN (Person Name)// Elements are in this order:// * family name complex// * given name complex// * middle name// * name prefix// * name suffix.DicomDataSet ds = new DicomDataSet();ds.InsertElementAndSetValue(DicomTag.PatientName, "Smith^John^MiddleName^Mr.^III");// Get a PersonName value of an element by specifying a tag, and using a delegate// Use this form when the type is not native to the dataset// The data is extracted from the field as a string and passed to the provided method.PersonName pn = null;pn = ds.GetValue<PersonName>(DicomTag.PatientName,null,delegate (string data){PersonName t = new PersonName(data);return t;});DumpPersonName(pn);// Another overload, specifying parent elementpn = ds.GetValue<PersonName>(null,true,DicomTag.PatientName,null,delegate (string data){PersonName t = new PersonName(data);return t;});DumpPersonName(pn);// Another overload, this time passing in the DICOM element instead of a tagDicomElement element = ds.FindFirstElement(null, DicomTag.PatientName, true);pn = ds.GetValue<PersonName>(element,null,delegate (string data){PersonName t = new PersonName(data);return t;});DumpPersonName(pn);}
GetValueDelegate Members
DicomDataSet.GetValue{T}(DicomElement, bool, long, T, GetValueDelegate )
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
