I am trying to send multiples input features to the Geoprocessing.IGeoProcessor (to do an Intersect). I am doing this because I can't add the layer path since one of them is from ArcSDE. The example on the ESRI website is incomplete:

Building a custom geoprocessing function tool

' Multivalue parameter of Feature Layers/Feature Classes.'
Dim inputParameter As IGPParameterEdit3 = New GPParameterClass()
Dim inputType As IGPDataType = New GPFeatureLayerTypeClass()

Dim mvType As IGPMultiValue = New GPMultiValueClass()
mvType.MemberDataType = inputType

Dim mvValue As IGPMultiValue = New GPMultiValueClass()
mvValue.MemberDataType = inputType

inputFeatures.Name = "input_features"
inputFeatures.DisplayName = "Input Features"
inputFeatures.ParameterType = esriGPParameterType.esriGPParameterTypeRequired
inputFeatures.Direction = esriGPParameterDirection.esriGPParameterDirectionInput
inputFeatures.DataType = CType(mvType, IGPDataType)
inputFeatures.Value = CType(mvValue, IGPValue)


There is no code to actually add the feature layer to the input features list. I tried to add my feature layer with :


and I got a invalid COM interface cast exception. What is the real way to do this?


If you want to create a new geoprocessing tool like in your example, then you do not add the layer yourself. This is doing the tool for you during running it.

But I think you want to consume an already existing tool (like intersect). This is explained in How to run a geoprocessing tool

| improve this answer | |
  • I ended up doing something else because it doesn't work. Like I said, I must use the IfeatureLayer object because I can't use a path for ArcSDE. Anyway, I don't need an answer anymore. Thanks! – Math Oct 20 '16 at 15:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.