2011-07-07 87 views
1

我有一大堆的車型進行本地化種源文件(RESX)和我正在尋找一種方法來保持我的努力盡可能小:)生成MVC模型定義

從本質上講,我有一個模型類,其中所有屬性(根據需要)通過DisplayNameAttribute進行降級。

我想要做的是,構建一個工具,在類定義上查找屬性(例如「Views.Contact」),然後生成(更新)默認的resx文件(例如「Views.Contact。 RESX「)。這個實現將遵循一個約定而不是配置方法。

有沒有工具/例子,我錯過了,這將使這項工作更容易?有沒有任何框架(.NET4)的支持?

回答

3

比我想象的要容易。這裏是我的(改善的)代碼:

public void GenerateResx() 
    { 

     Type model = typeof(BuyCABModel); 


     List<Type> member = new List<Type>(); 
     member.Add(typeof(RegisterModel)); 
     member.Add(typeof(AddOpenAuthAccountModel)); 
     member.Add(typeof(LoginModel)); 
     CreateRes(member, "Views.Member.resx"); 


    } 
    private void CreateRes(List<Type> models, string resxFile) 
    { 

     using (ResXResourceWriter writer = new ResXResourceWriter("c:\\temp\\"+resxFile)) 
     { 

      foreach(Type model in models) 
      { 


       PropertyInfo[] ps= model.GetProperties(); 

       foreach (PropertyInfo p in ps) 
       { 
        foreach (Attribute a in p.GetCustomAttributes(true)) 
        { 
         if (a.GetType() == typeof(DisplayNameAttribute)) 
         { 
          DisplayNameAttribute d = (DisplayNameAttribute)a; 
          writer.AddResource(p.Name + "_DisplayName", d.DisplayName); 
         } 
         else if (a.GetType() == typeof(DisplayAttribute)) 
         { 
          DisplayAttribute d = (DisplayAttribute)a; 
          writer.AddResource(p.Name + "_DisplayName", d.Name); 
         } 

        } 
       } 
      } 
      writer.Generate(); 
      writer.Close(); 

     } 
    } 

提示:如果您需要在Visual Studio生成的designer.cs代碼只是打開VS中的.resx和切換訪問修飾符下拉

+0

非常感謝您對拯救我的一天。我不敢相信沒有人投票贊成!!相信我,如果我可以投兩次我會:) –