Ho una struttura a cui voglio aggiungere metodi statici. Sì, hai indovinato, sto parlando di Datetime
.
È un requisito piuttosto tipico aggiungere MyCustomParse. Capita di restituire Datetime?
, quindi non è un costruttore, ma è in quell'area, un metodo statico che restituisce un'istanza. Il contenuto di questo metodo è già stato scritto e attualmente vive felice come metodo di istanza di una classe che lo utilizza. Voglio portarlo fuori da quella classe così posso usarlo altrove.
Tradizionalmente lo inserisco in una classe helper (che è ciò che ho fatto qui), ma a quanto pare sono cattivi .
Quello che voglio veramente fare è legare Datetime.MyCustomParse(mystring)
. Ma l'unico modo che vedo è creare una nuova struttura che compone Datetime
. Poi aggiungo il mio metodo, scrivo le conversioni implicite e poi inserisco tutti gli altri metodi Datetime
, ecc. Questo sarebbe un problema da codificare (Essere verboso causa anche problemi con i documenti xml e il codice ingenuo metriche di copertura, se ciò conta per qualsiasi cosa).
Ho preso in considerazione i metodi di estensione , ma non penso che i metodi abbiano senso sulle istanze.
Qual è la rigida posizione OO? Ricevo un metodo per scrivere metodi che dovrebbero appartenere alle classi in classi helper separate quando voglio estendere le strutture in questo modo?
Qual è la posizione pragmatica (non sto dicendo che OO non è pragmatico), è questo codice che vorresti scrivere o ho perso un trucco?
internal static class DateTimeHelper
{
public static DateTime? MyCustomParse(string utcDateTimeText, string[] formats)
{
DateTime utcDateTime;
if (DateTime.TryParseExact(utcDateTimeText, formats, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out utcDateTime))
{
return utcDateTime;
}
return null;
}
}
PS So che ci sono visualizzazioni più sfumate sulle classi helper , ma mi sento ancora ho bisogno di giustificare il mio uso qui.