2013-04-09 4 views
0

Мои ресурсы хранятся в собственной сборке, и у меня есть ссылка на эту сборку в моем веб-приложении. Я могу получить доступ к ресурсам двумя разными способами: скомпилированными константами или с помощью ResourceManager.Файлы ресурсов C#

var method1 = Prototype.Localization.CustomerRecord.BillingId;

или

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

Используя первый подход кажется, ежу понятно (но это обычно означает, что он собирается вернуться и укусить меня, когда все становится более сложным), так, что являются преимущества или недостатки второго подхода? Является ли первый подход причиной для меня проблемы в будущем?

+2

2-й подход - какой resx компилятор делает ** под крышкой **. IMO 2nd one всегда хуже, потому что у вас есть строка ** ** (тогда она может быть отключена, и вы не будете знать до времени выполнения). Поэтому я могу спросить: если ** первый подход короче и проще **, то есть ли веская причина использовать второй? Мой ответ «нет» (более того, вы можете смешивать их, если вам понадобится это для особого). –

+0

Спасибо, Адриано. Я буду отмечать как принятый, если вы создадите в качестве ответа. – Joe

+0

Tnx, я добавил ответ. –

ответ

1

Каковы преимущества или недостатки второго подхода?

2-й подход - это то, что делает компилятор resx под крышкой. IMO 2nd one всегда хуже, потому что у вас есть строка (тогда она может отключиться, и вы не узнаете ее до тех пор, пока она не будет выполняться), и из-за этого вам не понадобятся проверки времени компиляции и поддержка времени разработки.

Является ли первый подход причиной возникновения проблем в будущем?

Нет, по крайней мере, не более, чем что-либо еще (потому что вы будете ломать ошибки на своих HTML-страницах, когда сначала их компилируете во время выполнения).

Поэтому я могу спросить: если первый подход короче и проще, есть ли веская причина использовать второй? Мой ответ «нет» (более того, вы можете смешивать их, если вам понадобится это для особого).

0

Да, я согласен с Адриано, что второй хуже из-за этих «магических» строк.

В первом подходе у вас есть еще несколько преимуществ, которые включают проверку времени компиляции, поскольку вы ссылаетесь на класс и свойство, если этого свойства не существует, вы получите сообщение об ошибке, intellisense - еще один.

Другим преимуществом является то, что если вы решили отойти от встроенного диспетчера ресурсов, вы можете просто сменить сгенерированный класс (класс ресурсов) своим уважением к пространству имен и т. Д. С помощью собственной внутренней логики.

IMO, я бы придерживался первого.

Смежные вопросы