Help! How to set a material on Skeletal Mesh in C++?

I have a skeletal mesh and I want to set a material on a specific slot. How can I do it?
I am currently trying the following method but its not working.

void AMyCharacter::SetDynamicMaterials()
{
ReturnDynamicMaterial = UMaterialInstanceDynamic::Create(MaterialSource, this, FName("MyDynMaterial"));
static ConstructorHelpers::FObjectFinder<UMaterialInterface>MaterialSource (TEXT("/Game/Assets/MyDynMaterial"));
	if (MaterialSource.Object != nullptr)
	{
		GetMesh()->SetMaterialByName("head_Slot", ReturnDynamicMaterial);
	}
	return;
}

Incase if you want to see the example in blueprints. this is what I want to achieve …

This is how it looks like in the native code generator.

void AMyTestCharacter::SetDynamicMaterials()
{
	UMaterialInstanceDynamic* DynMaterialRefference{};

	UMaterialInstanceDynamic* CreateDynamicMaterialInstance_ReturnValue{};

	CreateDynamicMaterialInstance_ReturnValue = UKismetMaterialLibrary::CreateDynamicMaterialInstance(this, CastChecked<UMaterialInterface>(CastChecked<UDynamicClass>(AMyTestCharacter::StaticClass())->UsedAssets[0], ECastCheckedType::NullAllowed), FName(TEXT("None")), EMIDCreationFlags::None);

	DynMaterialRefference = CreateDynamicMaterialInstance_ReturnValue;

	if(::IsValid((*(AccessPrivateProperty<USkeletalMeshComponent* >((this), ACharacter::Mesh() )))))
	{
		(*(AccessPrivateProperty<USkeletalMeshComponent* >((this), ACharacter::Mesh() )))->SetMaterialByName(FName(TEXT("TopBody.Slot")), DynMaterialRefference);
	}
}

Solution