В моем проекте у меня есть класс заголовка, который представляет глобально уникальный ключ для части информации внутри системы, например, кому он принадлежит, во сколько он существует и т. Д. Внутри того же класса заголовка у меня также есть поля для информации, которая специфична для данного экземпляра данных, например, кто создал эту версию информации, когда она была создана, если ее новые данные необходимо сохранить в базе данных и т. д.
Ниже приведен пример хранения некоторой информации в классе транспорта данных и запроса ее обратно.
var header = new IntvlDataHeader(
datapoint: Guid.NewGuid(),
element: Guid.NewGuid(),
intervalUtc: DateTime.Now.Date);
package.StockData_Decimal(header, 5m);
decimal cloneData;
package.TryGetData_Decimal(ref header, out cloneData);
// header now refers to a different object, that could have different flags/information
Обратите внимание, как я заставил TryGetData_Decimal передавать переменную заголовка по ссылке. IntvlDataHeader является классом, и если данные находятся внутри TryGetData, то ссылка изменяется, чтобы указывать на новый экземпляр IntvlDataHeader, который содержит информацию конкретного экземпляра в дополнение к той же информации уникального ключа.
Является ли сочетание ключа с информацией, специфичной для экземпляра, и использование параметра ref как плохим, как внутри, так и снаружи? Будет ли попытка разделить другой класс так, чтобы было два выходных параметра и никакие ref-параметры лучше или избежать каких-либо потенциальных проблем?
Подпись метода public bool TryGetData_Decimal(ref IntvlDataHeader header, out decimal data)