Missing values: getting the System.Missing.Value value
When dealing with office integration scenarios and when calling APIs that are based on old COM interfaces, there is a need to specify that a value is not provided. The notmal way to do this (say, in C#) is to use
System.Reflection.Missing.Value
Now, as it happens, Value is not a static property, as one might expect, but instead a public static field. It is currently not possible in X++ to reference the value of a field.
There are at least two ways to solve the problem:
- You can use a managed method to get the value. This has the disadvantage that you need to put this glue code in an assembly that is deployed to your Ax installation. This may or may not be a problem, depending on your situation, but it is not exactly elegant.
- Or, you can use reflection from X++ to get the value, as shown here:
System.Type type = System.Type::GetType("System.Reflection.Missing");
System.Reflection.FieldInfo info = type.GetField("Value");
System.Object value = info.GetValue(null);
This has a performance penalty involved, but that can rpobably be ignored in most cases.
Comments
- Anonymous
January 15, 2008
PingBack from http://msdnrss.thecoderblogs.com/2008/01/15/missing-values-getting-the-systemmissingvalue-value/