Я считаю, что вы могли бы изменить Sitecore Glass Mapper SitecoreFieldAttribute для достижения этой цели.
Вы можете реализовать интерфейс IIndexFieldNameFormatterAttribute
на стекле Mapper SitecoreFieldAttribute
.
Этот интерфейс вы найдете в Sitecore.ContentSearch.Linq.dll
и выглядит следующим образом:
namespace Sitecore.ContentSearch
{
public interface IIndexFieldNameFormatterAttribute : _Attribute
{
string GetIndexFieldName(string fieldName);
string GetTypeFieldName(string fieldName);
}
}
Ваша реализация будет то, что, я вставил только методы интерфейса здесь.
namespace Glass.Sitecore.Mapper.Configuration.Attributes
{
/// <summary>
/// Used to populate the property with data from a Sitecore field
/// </summary>
public class SitecoreFieldAttribute: AbstractSitecorePropertyAttribute, IIndexFieldNameFormatterAttribute
{
public string GetIndexFieldName(string fieldName)
{
return this.FieldName;
}
public string GetTypeFieldName(string fieldName)
{
return fieldName;
}
я проверить его убежищем `т, но, как я мог видеть Sitecore Linq полагаться на этот интерфейс, чтобы найти имена полей. Вы можете исследовать это самостоятельно, но вот кусок кода, который заставил меня сделать вывод, что:
var variable = (from p in (IEnumerable<PropertyInfo>)typeof(TItem).GetProperties()
select new { Property = p, Attribute = (IIndexFieldNameFormatterAttribute)p.GetCustomAttributes().FirstOrDefault<Attribute>((Attribute a) => a is IIndexFieldNameFormatterAttribute) }).FirstOrDefault((p) => p.Attribute != null);
if (variable != null && variable.Attribute.GetIndexFieldName(variable.Property.Name) == this.FieldName)
{
property = variable.Property;
}
Надеется, что это помогает ..
Да, они не нужны то же самые, но по умолчанию поля документа Lucene (.ToLower(). Замените ('', _ '), но так как это преобразование выполняется автоматически, я получаю атрибуты IndexField и SitecoreField с тем же параметром. Так что я хочу найти и ввести точку, чтобы добавить картографию программно. В качестве альтернативы, я попытался найти способ создания настраиваемого картографа и использовать его для этого, но я не мог его найти - есть слишком много кода, и поскольку он открыт с помощью отражателя, комментариев для описания поведения нет. – Zenima