7
votes

Comment dériver la culture personnalisée de la classe .NET CultureInfo?

Je veux mettre ma culture d'application sur ce que je veux, quels que soient la culture du système d'exploitation. Pour obtenir ceci, j'ai utilisé la classe cultureInfo avec "FA-IR" comme culture, mais il a utilisé le "grégoriancalendar" comme calendrier par défaut et non la classe de Persiancalendar .NET. J'ai donc essayé de dériver une nouvelle classe de CultureInfo pour mettre en œuvre ma culture client:

    public override Calendar[] OptionalCalendars
    {
        get
        {
            return base.OptionalCalendars.Concat<Calendar>(new Calendar[1] { new PersianCalendar() }).ToArray<Calendar>();
        }
    }  


1 commentaires

Peut-être que ce lien vous aide plus de compatriote :) CODEPROJECT.COM /Articles/17495/Persian-DaTetime


3 Réponses :


5
votes

Essayez d'utiliser un culTureAndregionInfobuilder < / a>. Selon le MSDN, il s'agit de la manière préférée de créer personnalisé cultures .

EDIT: Si cela échoue, je suppose que Un contournement sale à l'aide de la réflexion est le seul moyen de créer une telle culture personnalisée.


2 commentaires

Merci, je vais essayer les deux sens dès que possible. Mais je préfère ne pas utiliser de réflexion ici, car c'est vraiment une solution de contournement sale.


J'ai essayé le constructeur, il y a quelques limitations dans la structure .NET pour utiliser Persiancalendar, mais ces deux solutions semblent fonctionner correctement pour mon problème. La manière de réflexion fonctionne également, mais certains comportements étranges se produisent. Après avoir appliqué une truc de réflexion et définir la nouvelle culture, lorsque vous appelez la touche d'une instance DateTime, vous obtenez une date persane, mais si vous obtenez des propriétés d'année, de mois et de jour séparément, vous aurez toutes des dates grégoriennes.



0
votes

Malheureusement, ce n'est pas possible. Il a été déposé comme un bogue afin que Microsoft soit au courant de ce problème. Voir http://connect.microsoft.com/visualstudio/feedback/Détails/ 507262 / persan-cultureinfo


1 commentaires

Oui, je connaissais ces limitations. J'ai donc commencé cette question pour trouver un moyen de le mettre en œuvre en hérité de la propriété de cultureInfo et de la disponibilité de la propriété du calendrier.



4
votes

Cinq ans ont passé et les choses ont changé depuis. Microsoft a Ouvrez Sourced . NET , et maintenant, il prend en charge Persiancalendar hors de la boîte.

J'ai essayé l'extrait suivant avec .NET CORE 1.0 et cela fonctionne simplement bien: xxx


0 commentaires