نگاشت اشیاء در AutoMapper توسط Attribute ها #1
نویسنده: مرتضی رییسی
تاریخ: ۱۳۹۴/۰۸/۲۴ ۲۱:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
[MapFrom(typeof (Student), ignoreAllNonExistingProperty: true, alsoCopyMetadata: true)]
public class AdminStudentViewModel
{
// [IgnoreMap]
public int Id { set; get; }
[MapForMember("Name")]
public string FirstName { set; get; }
[MapForMember("Family")]
public string LastName { set; get; }
public string Email { set; get; }
[MapForMember("RegisterDateTime")]
public string RegisterDateTimePersian { set; get; }
[UseValueResolver(typeof (BookCountValueResolver))]
public int BookCounts { set; get; }
[UseValueResolver(typeof (BookPriceValueResolver))]
public decimal BookPrice { set; get; }
}; [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class MapFromAttribute : Attribute
{
public Type SourceType { get; private set; }
public bool IgnoreAllNonExistingProperty { get; private set; }
public bool AlsoCopyMetadata { get; private set; } //Go to: https://www.dntips.ir/courses/topic/16/cb36bc2e-4263-431e-86a5-236322cb5576
public MapFromAttribute(Type sourceType, bool ignoreAllNonExistingProperty = false,
bool alsoCopyMetadata = false)
{
SourceType = sourceType;
IgnoreAllNonExistingProperty = ignoreAllNonExistingProperty;
AlsoCopyMetadata = alsoCopyMetadata;
}
}; [AttributeUsage(AttributeTargets.Property)]
public class IgnoreMapAttribute : Attribute {}; [AttributeUsage(AttributeTargets.Property)]
public class MapForMemberAttribute : Attribute
{
public string MemberToMap { get; private set; }
public MapForMemberAttribute(string memberToMap)
{
MemberToMap = memberToMap;
}
}; [AttributeUsage(AttributeTargets.Property)]
public class UseValueResolverAttribute : Attribute
{
public IValueResolver ValueResolver { get; private set; }
public UseValueResolverAttribute(Type valueResolver)
{
ValueResolver = valueResolver.GetConstructors()[0].Invoke(new object[] {}) as IValueResolver;
}
};