Вы можете использовать CommunityAttributeBuilder (https://github.com/Geta/Community.EntityAttributeBuilder), который похож на PageTypeBuilder для CMS. В настоящее время он поддерживает CMS6, я буду совершать v7, как только закончу тестирование. Оформляя свойства вашего класса специальным атрибутом, вы найдете те, которые созданы на целевом сайте.
Например:
[CommunityEntity(TargetType = typeof(IUser))]
public class UserAttributes : IClubUserAttributes
{
[CommunityEntityMetadata]
public virtual int AccessType { get; set; }
[CommunityEntityMetadata]
public virtual string Code { get; set; }
[CommunityEntityMetadata]
public virtual int EmployeeKey { get; set; }
[CommunityEntityMetadata]
public virtual bool IsAdmin { get; set; }
}
Библиотека будет проверять все узлы и искать типов, украшенных атрибутом CommunityEntity, если нашел, то свойства будут отсканированы и награжденных с атрибутом CommunityEntityMetadata будет создан автоматически в БД. Он также поддерживает строго типизированные интерфейс по типу IUser:
var metadata = user.AsAttributeExtendable<UserAttributes>();
metadata.AccessType = info.AccessType;
metadata.Code = info.Code;
metadata.EmployeeKey = info.EmployeeKey;
metadata.IsAdmin = info.IsAdmin;
Более подробную информацию о библиотеке можно было бы узнать - http://world.episerver.com/Blogs/Valdis-Iljuconoks/Dates/2012/6/Community-Attribute-Builder-final/
Более подробную информацию о внутреннем устройстве (если интересно) можно найти здесь - http://www.tech-fellow.lv/2012/06/when-you-need-something-stronger/
пакета для CMS7 на пути к Nuget feed;) –
Это замечательно. Спасибо :) – user1408470
Привет, Вы можете попробовать его - http://nuget.episerver.com/en/OtherPages/Package/?packageId=Geta.Community.EntityAttributeBuilder.CMS7 Любая обратная связь ценна :) –