У меня есть словарь (форматеры), объявленный в следующем коде, в который будут добавлены элементы внутри нескольких модулей HttpModules.Как только те загружены, это не будет записано снова.Каков наилучший способ показать это, чтобы к нему можно было получить доступ с любого языка .NET?Я знаю, что это кажется неубедительным и выглядит так, как будто мне нужно, чтобы они просто реализовали ToString (), однако часть приложения требует, чтобы строки были в определенном формате, и я не хочу, чтобы клиентам приходилось реализовывать ToString () способом, специфичным длямое заявление.
module MappingFormatters
open System
open System.Collections.Generic
let formatters = new Dictionary<Type, obj -> string>();
let format item =
let toDateTime (d:DateTime) =
let mutable date = d;
if (date.Kind) <> System.DateTimeKind.Utc then
date <- date.ToUniversalTime()
date.ToString("yyyy-MM-ddTHH:mm:00Z")
let stripControlCharacters (str:string) =
let isControl c = not (Char.IsControl(c))
System.String( isControl |> Array.filter <| str.ToCharArray())
let defaultFormat (item:obj) =
match item with
| :? string as str-> stripControlCharacters(str)
| :? DateTime as dte -> toDateTime(dte)
| _ -> item.ToString()
let key = item.GetType();
if formatters.ContainsKey(key) then
formatters.Item(key) item
else
defaultFormat item