protected void SetValueType(Type valueType)
 {
     if (valueType != null)
     {
         ValueType = valueType;
         typeof(ValueChangeEvent).GetMethod("CreateValueEvent", BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(ValueType).Invoke(this, null);
         typeof(ValueChangeEvent).GetMethod("CreateSetValueAction", BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(ValueType).Invoke(this, null);
     }
     else
     {
         ValueType   = null;
         changeEvent = new TriggerEvent();
         setValue    = null;
     }
 }
 private void CreateValueEvent <T>()
 {
     changeEvent = new ValueEvent <T>();
 }