Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SetValue() [1/2]

override void System.ComponentModel.ReflectPropertyDescriptor.SetValue ( object component,
object value )
inline

Definition at line 823 of file ReflectPropertyDescriptor.cs.

824 {
825 if (component == null)
826 {
827 return;
828 }
829 ISite site = MemberDescriptor.GetSite(component);
830 object obj = null;
831 object invocationTarget = GetInvocationTarget(_componentClass, component);
832 if (IsReadOnly)
833 {
834 return;
835 }
836 IComponentChangeService componentChangeService = null;
837 if (site != null)
838 {
839 componentChangeService = (IComponentChangeService)site.GetService(typeof(IComponentChangeService));
840 }
841 if (componentChangeService != null)
842 {
843 obj = GetMethodValue.Invoke(invocationTarget, null);
844 try
845 {
846 componentChangeService.OnComponentChanging(component, this);
847 }
848 catch (CheckoutException ex)
849 {
850 if (ex == CheckoutException.Canceled)
851 {
852 return;
853 }
854 throw;
855 }
856 }
857 try
858 {
859 SetMethodValue.Invoke(invocationTarget, new object[1] { value });
860 OnValueChanged(invocationTarget, EventArgs.Empty);
861 }
862 catch (Exception ex2)
863 {
864 value = obj;
865 if (ex2 is TargetInvocationException && ex2.InnerException != null)
866 {
867 throw ex2.InnerException;
868 }
869 throw;
870 }
871 finally
872 {
873 componentChangeService?.OnComponentChanged(component, this, obj, value);
874 }
875 }
static readonly CheckoutException Canceled
override? object GetInvocationTarget(Type type, object instance)
override void OnValueChanged(object component, EventArgs e)
Exception? InnerException
Definition Exception.cs:104
object? Invoke(object? obj, object?[]? parameters)
void OnComponentChanged(object component, MemberDescriptor? member, object? oldValue, object? newValue)
void OnComponentChanging(object component, MemberDescriptor? member)

References System.ComponentModel.Design.CheckoutException.Canceled, System.EventArgs.Empty, System.IServiceProvider.GetService(), System.ComponentModel.MemberDescriptor.GetSite(), System.Exception.InnerException, System.obj, System.ComponentModel.Design.IComponentChangeService.OnComponentChanged(), System.ComponentModel.Design.IComponentChangeService.OnComponentChanging(), and System.value.