T 方法语法
T Method Syntax
我正在探索 nopCommerce 4.0 源代码,但很难理解其流行的本地化方法“@T()”的语法。
调用该方法的方式类似于@T("Products.FreeShipping"),它应return本地化字符串。
T() 是遵循 C# 语法的方法吗?如果它是 C# 方法,为什么它没有像 "public Lozalizer T(string parameter1)" 模式这样的方法签名?
并且它在 T() 方法下使用 "get { ... }" 语句,在我看来这更像是 C# 中的获取访问器模式,这怎么可能?
我在 "NopRazorPage" class 下找到它的实现如下:
public Localizer T
{
get
{
if (_localizationService == null)
_localizationService = EngineContext.Current.Resolve<ILocalizationService>();
if (_localizer == null)
{
_localizer = (format, args) =>
{
var resFormat = _localizationService.GetResource(format);
if (string.IsNullOrEmpty(resFormat))
{
return new LocalizedString(format);
}
return new LocalizedString((args == null || args.Length == 0)
? resFormat
: string.Format(resFormat, args));
};
}
return _localizer;
}
}
我正在探索 nopCommerce 4.0 源代码,但很难理解其流行的本地化方法“@T()”的语法。
调用该方法的方式类似于@T("Products.FreeShipping"),它应return本地化字符串。
T() 是遵循 C# 语法的方法吗?如果它是 C# 方法,为什么它没有像 "public Lozalizer T(string parameter1)" 模式这样的方法签名?
并且它在 T() 方法下使用 "get { ... }" 语句,在我看来这更像是 C# 中的获取访问器模式,这怎么可能?
我在 "NopRazorPage" class 下找到它的实现如下:
public Localizer T
{
get
{
if (_localizationService == null)
_localizationService = EngineContext.Current.Resolve<ILocalizationService>();
if (_localizer == null)
{
_localizer = (format, args) =>
{
var resFormat = _localizationService.GetResource(format);
if (string.IsNullOrEmpty(resFormat))
{
return new LocalizedString(format);
}
return new LocalizedString((args == null || args.Length == 0)
? resFormat
: string.Format(resFormat, args));
};
}
return _localizer;
}
}