C#资源文件

时间:2013-04-09 15:59:00

标签: c# .net localization resx

我的资源存储在他们自己的程序集中,我在我的Web应用程序中引用了该程序集。我能够以两种不同的方式访问资源 - 通过编译常量或使用ResourceManager。

var method1 = Prototype.Localization.CustomerRecord.BillingId;

var resx = new ResourceManager(typeof (Prototype.Localization.CustomerRecord));
var method2 = resx.GetString("BillingId");

使用第一种方法似乎没什么好事(但这通常意味着当事情变得更复杂时它会回来并咬我),那么第二种方法的优缺点是什么?第一种方法会不会引发我的问题?

2 个答案:

答案 0 :(得分:1)

  

那么第二种方法有哪些优点或缺点?

第二种方法是resx编译器在封面下做的事情。 IMO第二个总是更糟糕,因为你有一个字符串(然后它可能会分离,你不会知道,直到运行时),因此你将缺乏编译时检查和设计时支持。

  

第一种方法会不会引发我的问题?

不,至少不会比其他任何东西更多(因为当你在运行时首次编译它们时,你会在HTML页面中发现错误。)

所以我可能会问:如果第一种方法更短更容易,那么有没有充分的理由使用第二种方法?我的回答是“不”(而且你可以将它们混合起来,以防你需要特殊的东西)。

答案 1 :(得分:0)

是的,我同意阿德里亚诺的说法,因为那些“魔术”字符串,第二个更糟糕。

第一种方法你有一些更多的优点,包括编译时间检查,因为你引用一个类和一个属性,如果这个属性不存在你会得到一个错误,intellisense是另一个。

另一个优点是,如果您决定放弃内置资源管理器,您可以使用您自己的内部逻辑,通过自己尊重命名空间等替换生成的类(资源类)。 p>

IMO,我会坚持使用第一个。