Я продолжаю писать несколько функций, многократно используемых в C#. Многие функции возвращают несколько значений, для которых я использую или ref параметры. Многие функции также содержат дополнительную информацию, которая может быть полезной для некоторых абонентов (но не для всех абонентов).Шаблон дизайна или кода для возврата нескольких необязательных значений из функции
Например, функция чтения CSV-файла может иметь дополнительную информацию, например no. пустых строк, №. строк с повторяющимися значениями и некоторых других статистических данных.
Дополнительная информация также может включать в себя предупреждение, сообщения и т.д.
Не каждый абонент будет заинтересован в этой информации, так что я не хочу, чтобы включить все эти, как из рефов или кортежи, которые сделают это обязательно для вызывающего, чтобы объявить все такие ожидаемые переменные.
Я просто хотел, чтобы выяснить, есть ли способ сделать дополнительную информацию доступной для абонентов, так что абонент может выбрать или получить некоторые из необязательной дополнительной информации, которую он заинтересован в.
Например , Func 1 может вызывать Func B. После его вызова он получает все стандартные значения возврата. Кроме того, может ли он вызвать что-то вроде FuncB.GetAdditionalInfo (infoType), если Func B не будет выполнен снова?
Возможно, это можно создать, используя класс, который служит в качестве посредника для хранения всех необязательных значений, а затем возвращает их вызывающему абоненту по запросу; но я хочу, чтобы он был достаточно общим для использования во всех моих служебных функциях.
Одна из возможностей Func B заключается в том, чтобы хранить все это в каких-либо глобальных переменных, которые вызывающий может получить при необходимости. Но если у класса утилиты есть несколько таких resuable функций, мне нужно будет иметь так много общедоступных переменных, для дополнительной информации о каждой функции!
Я нахожусь на .NET 4.5 на данный момент. Есть ли шаблон дизайна для этого? Я открыт, чтобы узнать, есть ли хорошее решение в F #.
Кроме того, я хочу избежать слишком много перегруженных версий, чтобы достичь этого! Спасибо.
Вы можете хранить данные в некоторых концепциях метаданных. Это просто словарь с ключом. – Michael
Ya, но, если возможно, я хочу, чтобы каждый раз не вводить значение в вызывающем абоненте. – AllSolutions
И как мне сделать эту метаданную опциональной в вызывающем, если она не заинтересована в этом? – AllSolutions