Call a COM or VB.NET Method with Optional Parameter(s) from C#

Provided by the FMS Development Team

Question
I have to make call to VB.NET or legacy COM components (Interop wrapper will be created for it.). Fairly often, there are methods with optional parameters. Unlike VB.NET or VB, C# does not support optional parameter. Then, how should I call these methods?

Answer
C# forces you to specify all the parameters when calling a method. This means that you have to pass in something for the optional parameter.

You could look into document to figure out the default value of the parameter and pass it in. Sometimes, the value you passed in does not matter. You can pass in a dummy value. Make sure pass in the right data type.

If the parameter is using the type "object" (or "variant" from VB/COM standpoint), there is a shortcut, you can just pass in this value:

System.Reflection.Missing.Value

If you need do this often, you could define it as a read-only member variable and use this variable instead, like this:

private readonly object def = System.Reflection.Missing.Value;


Additional Resources

 

 

Thank you! Thank you! I just finished reading this document, which was part of a link in the recent Buzz newsletter. I have printed it for others to read, especially those skeptical on the powers of Access and its capabilities.

Darren D.


View all FMS products for Microsoft Access All Our Microsoft Access Products

 

 

Free Product Catalog from FMS