2009-04-27 3 views
0

Édité Question: Cela devrait être clair.Comment puis-je transmettre mes différents objets de requête à la même méthode pour le formatage?

 using System; 

     namespace UpdateDateTimeFields 
     { 
     class Program 
     { 
     static void Main(string[] args) 
     { 
     string dateTimeFormat = "dd/MM/yyy HH:mm:ss"; 

     DateTime time = DateTime.Now; 
     Update(time, dateTimeFormat); //Should update time 


     movemnet mymove = new movemnet(); 
     mymove.FromDate = DateTime.Now; 
     mymove.ToDate = DateTime.Now; 
     mymove.Name = "Test_Movement"; 
     Update(mymove, dateTimeFormat); //should update FromDate, ToDate 

     ParentClass cls = new ParentClass(); 
     cls.mv.FromDate = DateTime.Now; 
     cls.mv.ToDate = DateTime.Now; 
     cls.CurrentDate = DateTime.Now; 
     cls.Comment = "ParentClass_Comment"; 
     Update(cls, dateTimeFormat); //should update FromDate, ToDate, CurrentDate 

    } 

    private static void Update<T>(T Request, string format) 
    { 
     // How can this be acheived ??? 

     //tried with Using Reflection to Get and Set values of Properties - NO JOY !!! 
    } 
} 

internal class movemnet 
{ 
    public DateTime FromDate { get; set; } 
    public DateTime ToDate { get; set; } 
    public string Name { get; set; } 
} 
internal class ParentClass 
{ 
    public movemnet mv { get; set; } 
    public DateTime CurrentDate { get; set; } 
    public string Comment { get; set; } 
} 

}

+2

Ce n'est pas clair pour moi quel est le problème - en spécifiant l'argument type (selon le sujet) ou en boucle sur les champs de l'objet (auquel cas utilisez request.GetType() et Type.GetFiles). –

+1

D'accord; comme formulé, c'est une question assez vague. – Charlie

Répondre

0

Vous ne devriez pas le faire. Si vous souhaitez que votre classe expose une propriété dans un format particulier, vous devez demander à votre classe de le faire. Vous ne devez pas afficher les champs de votre classe. Vous devez séparer dans votre esprit et dans votre code les données elles-mêmes et la vue des données.

Vous ne devriez certainement pas utiliser la réflexion pour parcourir chaque champ de votre classe, vérifiez le type de DateTime et le format du format. Vous ne devriez certainement pas faire quelque chose comme ...

var fields = req1.GetType().GetFields( 
    BindingFlags.Instance | BindingFlags.NonPublic) 
    .Where(f=> f.FieldType == typeof(DateTime)); 

Je me sens sale juste en tapant ce code. :)

Questions connexes