SenseNet.ContentRepository.Field.WriteProperty C# (CSharp) Method

WriteProperty() protected method

protected WriteProperty ( string propertyName, object value ) : void
propertyName string
value object
return void
        protected virtual void WriteProperty(string propertyName, object value)
        {
            Node contentHandler = this.Content.ContentHandler;

            var dynamicHandler = contentHandler as ISupportsDynamicFields;
            if (dynamicHandler != null)
            {
                dynamicHandler.SetProperty(propertyName, value);
                return;
            }
            var genericHandler = contentHandler as GenericContent;
            if (genericHandler != null)
            {
                genericHandler.SetProperty(propertyName, value);
                return;
            }
            var runtimeNode = contentHandler as Content.RuntimeContentHandler;
            if (runtimeNode != null)
            {
                runtimeNode.SetProperty(propertyName, value);
                return;
            }

            //-- with reflection:
            Type type = contentHandler.GetType();
            PropertyInfo prop = type.GetProperty(propertyName);
            if (prop == null) // it can be null when property is ContentListProperty?
                throw new InvalidOperationException(String.Concat("Property not found: ", propertyName, " (ContentType: ", this.Content.ContentType.Name, ")."));
            MethodInfo setter = prop.GetSetMethod();
            if (setter == null) // it can be null when property is ContentListProperty?
                throw new InvalidOperationException(String.Concat("Property is not writeable: ", propertyName, " (ContentType: ", this.Content.ContentType.Name, ")."));
            setter.Invoke(contentHandler, new object[] { value });
        }