2010-09-03 2 views
2

Я получаю следующее исключение при вызове любого из моих методов Mapper.Map.AutoMapper/Castle - правила безопасности наследования, нарушаемые при переопределении члена

Нарушение правил безопасности, нарушаемых при переопределении элемента: 'Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService()'. Безопасность доступа к методу переопределения должна соответствовать безопасности доступа к методу .

Я использую последнюю версию AutoMapper, загруженную из codeplex внутри моего приложения S # arp 1.6, работающего на .Net 4.0 (который использует версию 1.2.0.6623 Castle.Core).

Я верю, что это как-то связано с новыми настройками безопасности .Net 4.0, которые я не совсем понимаю.

Есть ли способ исправить это?

Пол

+1

Вы пробовали как слитую и неслиянную сборку AutoMapper? У меня возникла проблема с объединенной версией - сменить ее на несмонтированный (Automapper v2.0.0.200). – rmac

+0

Спасибо rmacfie ..., что решил это для меня. – Daniel

ответ

1

Я пытался что-то из немного googling, который исправил мою проблему, я не уверен, что это идеальный или рекомендуемый подход, но он сработал.

Я добавил это в файл проектах, Automapper «AssemblyInfo.cs»:

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 

Я перекомпилировать и использовал новые DLL и все работало нормально.

Оставьте комментарии, если это не рекомендуется или если есть лучший подход.

На данный момент, хотя я оставлю свой собственный ответ как правильный.

Спасибо за помощь!

UPDATE:

Мои отображения довольно просто, извините обо всем коде, но думал, что это может помочь вам:

Код инициализации:

Mapper.Reset(); 
Mapper.Initialize(x => 
{ 
    x.AddProfile<LeadsProfile>(); 
    //x.AddProfile<AttendeeProfile>(); 
}); 

Mapper.AssertConfigurationIsValid(); 

LeadsProfile.CS

public class LeadsProfile : AutoMapper.Profile 
     { 
      public override string ProfileName 
      { 
       get { return "LeadsProfile"; } 
      } 

      protected override void Configure() 
      { 

       Mapper.CreateMap<Lead, LeadDto>(); 

       Mapper.CreateMap<Lead, LeadDetailDto>(); 

       Lead lead = null; 
       Mapper.CreateMap<int, LeadDetailDto>() 
        .BeforeMap((s, d) => lead = ServiceLocator.Current.GetInstance<ILeadRepository>().FindOne(s)) 
        .ForMember(d => d.Id, x => x.MapFrom(s => lead.Id)) 
        .ForMember(d => d.Fullname, x => x.MapFrom(s => lead.Fullname)) 
        .ForMember(d => d.TelNumber, x => x.MapFrom(s => lead.TelNumber)) 
        .ForMember(d => d.BookedAppointmentDate, x => x.MapFrom(s => lead.BookedAppointmentDate)); 

      } 

     } 

Источник Класс

public class Lead : Entity 
    { 
     public Lead() 
     { 
      Status = Common.LeadStatus.Raw; 
      CreatedDate = DateTime.Now; 
     } 

     public Lead(Branch branch, Promoter promoter, LeadSource source, string fullname, string telNumber, Address address, DateTime apptDate) : this() 
     { 
      this.Branch = branch; 
      this.Promoter = promoter; 
      this.Source = source; 
      this.Fullname = fullname; 
      this.TelNumber = telNumber; 
      this.Address = address; 
      this.BookedAppointmentDate = apptDate; 
     } 

     public virtual Branch Branch { get; set; } 
     public virtual Promoter Promoter { get; set; } 
     public virtual LeadSource Source { get; set; } 
     public virtual Common.LeadStatus Status { get; set; } 

     public virtual bool ExistingCustomer { get; set; } 
     public virtual bool IsDoso { get; set; } 

     public virtual string TitlePrefix { get; set; } 
     public virtual string Fullname { get; set; } 
     public virtual string TelNumber { get; set; } 
     public virtual string MobileNumber { get; set; } 

     public virtual DateTime BookedAppointmentDate { get; set; } 

     public virtual Address Address { get; set; } 

     public virtual Store Store { get; set; } 

     public virtual IList<LeadProduct> Products { get; set; } 
     public virtual IList<Appointment> Appointments { get; set; } 
     public virtual IList<Sale> Sales { get; set; } 

     public virtual DateTime CreatedDate { get; set; } 
    } 

назначение Dto-х

public class LeadDto 
    { 
     public int Id { get; set; } 
     public string Fullname { get; set; } 
     public string TelNumber { get; set; } 
     public DateTime BookedAppointmentDate { get; set; } 
    } 

public class LeadDetailDto 
    { 
     public int Id { get; set; } 
     public string Fullname { get; set; } 
     public string TelNumber { get; set; } 
     public DateTime BookedAppointmentDate { get; set; } 
    } 
+0

Можно ли использовать пример сопоставлений источника/назначения? Если это ошибка, я бы с удовольствием проверил регрессионный тест. –

+0

Я обновил свой ответ с помощью своего кода, надеюсь, что это поможет ... будь замечательным, если это может быть исправлено, поэтому мне не нужно перекомпилировать проект. –

+0

Я получаю эту ошибку в последней версии 2.0.207 с .NET 4 – Schneider

Смежные вопросы

 Смежные вопросы