0

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

var method1 = Prototype.Localization.CustomerRecord.BillingId;

或者

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

使用第一种方法似乎很容易(但这通常意味着当事情变得更复杂时它会回来咬我),那么第二种方法的优点或缺点是什么?第一种方法会不会给我带来麻烦?

4

2 回答 2

1

那么第二种方法的优点或缺点是什么?

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

第一种方法会不会给我带来麻烦?

不,至少不会超过其他任何事情(因为当您在运行时首次编译 HTML 页面时,您会在 HTML 页面中发现错误)。

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

于 2013-04-09T19:47:01.083 回答
0

是的,我同意阿德里亚诺的观点,因为那些“魔术”弦,第二个更糟。

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

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

IMO,我会坚持第一个。

于 2013-04-09T16:10:15.553 回答