MatFileHandler icon indicating copy to clipboard operation
MatFileHandler copied to clipboard

Testing for variables

Open miloush opened this issue 3 years ago • 4 comments

There doesn't seem to be an easy way to check if a variable exists in a given file, and unfortunately the IMatFile indexer throws an exception when a variable does not exist. It would be useful to have a more tolerant way to access variables, such as one of the following:

  • have IMatFile[string] return null if variable does not exist
  • add IMatFile.TryGetVariable(string, out IVariable) method
  • expose the underlying dictionary as IReadOnlyDictionary<string, IVariable>

miloush avatar Jul 09 '21 11:07 miloush

Thanks for creating the issue! The current way to check if a variable exists is go through the IMatFile.Variables array and test the Name property of the elements, which is quite ugly. I will go with the second proposed solution. Another approach would be to inherit IMatFile from IReadOnlyDictionary<string, IVariable> or IDictionary<string, IVariable>, but there are some problems associated with that: I feel like it should be a read-only dictionary, but there is already a setter on the indexer for some reason. I guess we can do it when (if) we think about the next major version with breaking changes to the API.

mahalex avatar Jul 10 '21 07:07 mahalex

Version 1.4.0-beta1 published on nuget.org contains this change. Feel free to test it.

mahalex avatar Jul 10 '21 10:07 mahalex

Great, working for me!

miloush avatar Jul 15 '21 20:07 miloush

It would be very usefull to have the same interface for IStructureArray - currently you need to iterate over the FieldNames property. Exposing the TryGet method of the underlying Dictionary would help.

cbergemann avatar Apr 24 '22 12:04 cbergemann