I'm definitely late in the discussion, but it may help someone who's looking for this topic.
I had the exact same problem as @BenRufenacht and I couldn't really understand the given answer since in the geometry_property only a pair of parameters are required and type is not part of the data. So what I did was to display the tool in the geoprocessing pane, put in some parameters and from there copy the python command as shown in this screenshot:
Python command resulted as follows:
arcpy.management.CalculateGeometryAttributes(
in_features="ct Particelle",
geometry_property="AREA AREA",
length_unit="",
area_unit="SQUARE_METERS",
coordinate_system=None,
coordinate_format="SAME_AS_INPUT"
)
Then I just passed the same to MakeValueArray as follows:
var tool_name = "management.CalculateGeometryAttributes";
var geometry_property = "AREA AREA"
var areaUnit = "Square Meters";
var val_array = Geoprocessing.MakeValueArray(new object[] { _layer, geometry_property, null, areaUnit });
return await Geoprocessing.ExecuteToolAsync(tool_name, val_array);
Turned out it works as intended.
Sometimes it is really so much harder than it should be to find some reference about ESRI SDK issues, like this one. I found dozens code samples about using GeoProcessing tools, repeating the same key concepts again and again (usually with using the same tools, also), but I couldn't find any documentation/reference explaining how a "ValueType" parameter should be constructed and passed...hope this helps someone.