2009-04-27 84 views
0

编辑问题:这应该很清楚。如何将不同的请求对象传递给格式相同的方法?

 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

我不清楚问题是什么 - 指定类型参数(根据主题)或循环对象的字段(在这种情况下使用request.GetType()和Type.GetFiles)。 – 2009-04-27 01:10:31

回答

0

你不应该这样做。如果你想让你的班级以特定格式公开,你应该让你的班级这样做。你不应该暴露你的任何类字段。你应该在你的头脑和代码中分开数据本身和数据的视图。

您绝对不应该使用反射来遍历类中的每个字段,检查DateTime类型并设置格式。你绝对不应该这样做......

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

我觉得肮脏只是输入该代码。 :)

相关问题