コード例 #1
0
        /// <summary>
        /// Registers the given <see cref="DynamicObjectType"/> with this
        /// <see cref="DynamicMetadataProvider"/>.
        /// </summary>
        /// <param name="metadataProvider"></param>
        /// <param name="objType"></param>
        public void RegisterObjectType(IMetadataProvider metadataProvider, DynamicObjectType objType)
        {
            if (objType == null)
            {
                throw new ArgumentNullException(nameof(objType));
            }

            if (this.objTypes.ContainsKey(objType.FullName))
            {
                var msg = string.Format("{0} is already registered with this dynamic metadata provider", objType.FullName);
                throw new InvalidOperationException(msg);
            }

            // Attach the metadata provider
            if (metadataProvider == null)
            {
                metadataProvider = this;
            }
            objType.AttachMetadataProvider(metadataProvider);

            this.objTypes.Add(objType.FullName, objType);
        }