我的资源存储在他们自己的程序集中,我在我的Web应用程序中引用了该程序集。我能够以两种不同的方式访问资源 - 通过编译常量或使用ResourceManager。
var method1 = Prototype.Localization.CustomerRecord.BillingId;
或
var resx = new ResourceManager(typeof (Prototype.Localization.CustomerRecord));
var method2 = resx.GetString("BillingId");
使用第一种方法似乎没什么好事(但这通常意味着当事情变得更复杂时它会回来并咬我),那么第二种方法的优缺点是什么?第一种方法会不会引发我的问题?
答案 0 :(得分:1)
那么第二种方法有哪些优点或缺点?
第二种方法是resx编译器在封面下做的事情。 IMO第二个总是更糟糕,因为你有一个字符串(然后它可能会分离,你不会知道,直到运行时),因此你将缺乏编译时检查和设计时支持。
第一种方法会不会引发我的问题?
不,至少不会比其他任何东西更多(因为当你在运行时首次编译它们时,你会在HTML页面中发现错误。)
所以我可能会问:如果第一种方法更短更容易,那么有没有充分的理由使用第二种方法?我的回答是“不”(而且你可以将它们混合起来,以防你需要特殊的东西)。
答案 1 :(得分:0)
是的,我同意阿德里亚诺的说法,因为那些“魔术”字符串,第二个更糟糕。
第一种方法你有一些更多的优点,包括编译时间检查,因为你引用一个类和一个属性,如果这个属性不存在你会得到一个错误,intellisense是另一个。
另一个优点是,如果您决定放弃内置资源管理器,您可以使用您自己的内部逻辑,通过自己尊重命名空间等替换生成的类(资源类)。 p>
IMO,我会坚持使用第一个。