Can't get enum value from UProperty* in CanEditChange()

I am trying to disable editing struct properties by selected enum in blueprint:
I need to select enum value and after that editor should make all structs readonly except one defined by selected enum.
I have a struct with enum property and 3 different structs. i need to disable 2 structs and make 1 editable by that selected enum value.
Here is code:

bool AShooterWeapon::CanEditChange(const UProperty* InProperty) const
{
	const bool ParentVal = Super::CanEditChange(InProperty);

	bool bCanEdit = true;

	if (InProperty)
	{
		if (InProperty->GetFName() == FName("InstantConfig"))
		{
			UStruct* StructProperty = InProperty->GetOwnerStruct();
			if (StructProperty)
			{
				UProperty* FireTypeProperty = StructProperty->FindPropertyByName(FName("WeaponFireType"));
				if (FireTypeProperty && FireTypeProperty->IsA(UByteProperty::StaticClass()))
				{
					UByteProperty* ByteProp = CastChecked<UByteProperty>(FireTypeProperty);
					if (ByteProp)
					{
						uint8 Value = 255;

						auto Obj = StructProperty;

						Value = ByteProp->GetPropertyValue_InContainer(Obj);

						Value = ByteProp->GetPropertyValue(Obj);

						Value = ByteProp->GetUnsignedIntPropertyValue(Obj);

						auto TestPtr1 = ByteProp->GetPropertyValuePtr(Obj);
						Value = *TestPtr1;

						auto TestPtr2= ByteProp->GetPropertyValuePtr_InContainer(Obj);
						Value = *TestPtr2;

						EWeaponFireType WeaponFireType = EWeaponFireType(Value);

						bCanEdit = WeaponFireType == EWeaponFireType::Instant;

                                           // TEST2
					const void* Data = ByteProp->ContainerPtrToValuePtr<void>(Obj);
					if (Data)
					{
						Value = ByteProp->GetUnsignedIntPropertyValue(Data);
						

						if (Value != 255)
						{
							EWeaponFireType WeaponFireType = EWeaponFireType(Value);

							bCanEdit = WeaponFireType == EWeaponFireType::Instant;
						}
					}
					}
				}
			}
		}
	}

	return ParentVal && bCanEdit;
}

Value is always wrong for me.
in TEST2 editor crashes in memory access error on ContainerPtrToValuePtr()

How to get value right?

Maybe there is another way disabling edit with PostEditChangeChainProperty() like i wrote in other question: