以下の1つの更新
EqualityComparer<T>
Fluent/NHibernate を使用して永続化しようとしている (試みている) ことから派生した次のクラスがあります。
public class WeeklyGSFEntity : EqualityComparer<WeeklyGSFEntity>
{
public virtual int IssueNumber { get; set; }
public virtual int Severity { get; set; }
public virtual char PainIndex { get; set; }
public virtual Status Status { get; set; }
public virtual int Month { get; set; }
public virtual int Year { get; set; }
public virtual DateTime DateCreated { get; set; }
public virtual Region Region { get; set; }
public virtual DateTime IncidentStart { get; set; }
public virtual DateTime IncidentEnd { get; set; }
public virtual int SRCount { get; set; }
public virtual string AggravatingFactors { get; set; }
public virtual string AggravatingFactorDescription { get; set; }
public virtual TimeSpan MTTR
{
get
{
return (IncidentEnd - IncidentStart);
}
}
public WeeklyGSFEntity()
{
Status = Status.New;
}
public override int GetHashCode() { ... }
internal static bool StaticEqual(WeeklyGSFEntity x, WeeklyGSFEntity y) { ... }
public static bool operator ==(WeeklyGSFEntity x, WeeklyGSFEntity y) { ... }
public static bool operator !=(WeeklyGSFEntity x, WeeklyGSFEntity y) { ... }
public override bool Equals(WeeklyGSFEntity x, WeeklyGSFEntity y) { ... }
public override bool Equals(object obj) { ... }
public override int GetHashCode(WeeklyGSFEntity obj) { ... }
}
public enum Status { ... }
public enum Region { ... }
さて、これは先週うまくいきました。エンティティを保存しようとすると、次のメッセージが表示されます。
The following types may not be used as proxies:
Core.Models.WeeklyGSFEntity: method IndexOf should be 'public/protected virtual' or 'protected internal virtual'
Core.Models.WeeklyGSFEntity: method LastIndexOf should be 'public/protected virtual' or 'protected internal virtual'
ご覧のとおり、IndexOf または LastIndexOf メソッドはありません... :) それらをオーバーライドしようとしましたが、そもそもオーバーライドするために存在しません!
何か案は?
最初の更新
そのため、IL を掘り下げましたが、メソッドIndexOf
またはの兆候はありませんLastIndexOf
。さて、これがすべて起こる前に、WeeklyGSFEntities のコレクションを持つ競合に関する新しいクラスを作成しました。このコレクションにはメソッドが含まIndexOf
れLastIndexOf
ますが、マッピングとクラスの両方をプロジェクトから除外しました...