/// <summary>
        /// A constructor that uses the <see cref="DicomAnnotationItem{T}"/>'s unique identifier to determine
        /// the display name and label using an <see cref="IAnnotationResourceResolver"/>.
        /// </summary>
        /// <param name="identifier">The unique identifier of the <see cref="DicomAnnotationItem{T}"/>.</param>
        /// <param name="resolver">The object that will resolve the display name and label
        /// from the <see cref="DicomAnnotationItem{T}"/>'s unique identifier.</param>
        /// <param name="sopDataRetrieverDelegate">A delegate used to retrieve the Dicom tag data.</param>
        /// <param name="resultFormatterDelegate">A delegate that will format the Dicom tag data as a string.</param>
        public DicomAnnotationItem
        (
            string identifier,
            IAnnotationResourceResolver resolver,
            FrameDataRetrieverDelegate <T> sopDataRetrieverDelegate,
            ResultFormatterDelegate <T> resultFormatterDelegate
        )
            : base(identifier, resolver)
        {
            Platform.CheckForNullReference(sopDataRetrieverDelegate, "sopDataRetrieverDelegate");
            Platform.CheckForNullReference(resultFormatterDelegate, "resultFormatterDelegate");

            _sopDataRetrieverDelegate = sopDataRetrieverDelegate;
            _resultFormatterDelegate  = resultFormatterDelegate;
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="identifier">The unique identifier of the <see cref="DicomAnnotationItem{T}"/>.</param>
        /// <param name="displayName">The <see cref="DicomAnnotationItem{T}"/>'s display name.</param>
        /// <param name="label">The <see cref="DicomAnnotationItem{T}"/>'s label.</param>
        /// <param name="sopDataRetrieverDelegate">A delegate used to retrieve the Dicom tag data.</param>
        /// <param name="resultFormatterDelegate">A delegate that will format the Dicom tag data as a string.</param>
        public DicomAnnotationItem
        (
            string identifier,
            string displayName,
            string label,
            FrameDataRetrieverDelegate <T> sopDataRetrieverDelegate,
            ResultFormatterDelegate <T> resultFormatterDelegate
        )
            : base(identifier, displayName, label)
        {
            Platform.CheckForNullReference(sopDataRetrieverDelegate, "sopDataRetrieverDelegate");
            Platform.CheckForNullReference(resultFormatterDelegate, "resultFormatterDelegate");

            _sopDataRetrieverDelegate = sopDataRetrieverDelegate;
            _resultFormatterDelegate  = resultFormatterDelegate;
        }