You can apply custom CanEditChange rules per FProperty using the UObject::CanEditChange function.

Example:

if (InProperty->GetFName() == GET_MEMBER_NAME_CHECKED(ThisClass, SomeVar))  
{  
    return false;  
}

If you want to HIDE, there isn’t a direct virtual, but Aquanox on Unreal Source Discord shared this little trick:

void MyModule::StartupModule()
{
#if WITH_EDITOR
	StaticClass<UMyClass>()->FindPropertyByName("SomeVar")->SetMetaData("EditConditionHides", "true");
#endif
}

Which works if EditCondition is also set:

auto* SomeProperty = StaticClass<USomeClass>()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(USomeClass, SomePropertyName));  
SomeProperty->SetMetaData("EditCondition", "false");  
SomeProperty->SetMetaData("EditConditionHides", "true");