Мой ответ на все вопросы формы «Должен ли я изучать язык X или Y? Должен ли я изучать Z до Y и X после Y?» и т. д. то же самое: не беспокойтесь о таких вопросах. Забудь их. Если вы думаете, что изучение C # сейчас будет более полезным (может быть, есть больше рабочих мест, или вы хотите присоединиться к проекту, или, может быть, вам просто любопытно), тогда сядьте и начните учиться.
Если вы уже хорошо владеете одним языком, вам не понадобится много времени, чтобы подобрать достаточно для того, чтобы понять, сможете ли вы продуктивно использовать его. И вы не можете решить, стоит ли вам уделять много времени изучению языка, не зная его. Поэтому начните изучать C #, если хотите.
Чтобы довести это до крайности, я думаю, тот факт, что около 30 лет назад я изучил сборку Z80 еще до изучения BASIC, очень помог мне в этом. Тем не менее, я бы никогда не советовал вам изучать другие языки, пока вы не освоите сборку. (Кстати, все, что я помню, это код операции 0xc9 RET
).
Итак, начните изучать C #. Если вам любопытно, продолжайте изучать C, все время помня, что, несмотря на то, что оба имеют фигурные скобки, они совершенно разные языки. Так же, как C и C ++.
Я нашел решение. Теперь не нужно ссылаться на Forms.dll.
public class ScriptController : BaseController
{
private static readonly ResourceSet ResourceSet =
Resources.Controllers.Script.ResourceManager.GetResourceSet(CurrentCulture, true, true);
public ActionResult GetResources()
{
var builder = new StringBuilder();
builder.Append("var LocalizedStrings = {");
foreach (DictionaryEntry entry in ResourceSet)
{
builder.AppendFormat("{0}: \"{1}\",", entry.Key, entry.Value);
}
builder.Append("};");
Response.ContentType = "application/x-javascript";
Response.ContentEncoding = Encoding.UTF8;
return Content(builder.ToString());
}
}
Хорошо, другого ответа нет. Похоже, что ссылка на Forms.dll - единственный способ прямо сейчас. Вот код, который я придумал.
public class ScriptController : BaseController
{
private const string ResxPathTemplate = "~/App_GlobalResources/script{0}.resx";
public ActionResult GetResources()
{
var resxPath = Server.MapPath(string.Format(ResxPathTemplate, string.Empty));
var resxPathLocalized = Server.MapPath(string.Format(ResxPathTemplate,
"." + CurrentCulture));
var pathToUse = System.IO.File.Exists(resxPathLocalized)
? resxPathLocalized
: resxPath;
var builder = new StringBuilder();
using (var rsxr = new ResXResourceReader(pathToUse))
{
builder.Append("var resources = {");
foreach (DictionaryEntry entry in rsxr)
{
builder.AppendFormat("{0}: \"{1}\",", entry.Key, entry.Value);
}
builder.Append("};");
}
Response.ContentType = "application/x-javascript";
Response.ContentEncoding = Encoding.UTF8;
return Content(builder.ToString());
}
}