INormalisedDataPoint - this represents the interface for ingested Log/Metric data which has been processed and normalised. It has a property called Messages, where I intend to store a List<IMessageField> - so Messages would include things like CPU%: 95%, dataSource: my-macbook, ipAddress: ..... and so on. IMessageField have a string Name and string Value , and then convert the string to a numeric type, but I'd like to figure out how to accept either type, as a learning experience.NumericMessageField (which stores a number) and a StringMessageField which stores a string.