AutoMapper升級至4.1.1後出現ProfileName錯誤

AutoMapper升級至4.1.1後專案無法編譯

AutoMapper ProfileName Error

早上升級專案 AutoMapper 套件到最新版(4.1.1)後,發現專案無法通過編譯,查看錯誤訊息,看來是 AutoMapper 4.1.1 的屬性有些改變。

Profile.ProfileName

錯吳訊息

'xxx.ProfileName': cannot override inherited member 'Profile.ProfileName' because it is not marked virtual, abstract, or override

很明顯,新版本改變了 ProfileName 的存取方式,查詢AutoMapper Releases沒查到什麼有用的資訊。

按下F12查詢 Profile 類別的定義:

AutoMapper Profile 定義

ProfileName 屬性僅能 get,再看看建構式,解法很明顯了:

        public AtoB()
            : base("xxx")
        { }

        //public override string ProfileName
        //{
        //    get
        //    {
        //        return "xxx";
        //    }
        //}
 

將原本覆寫 ProfileName 屬性改成由 base() 傳遞給父類別。小怪一隻,打完結案。

升級一定有風險,升級前請詳細查看說明書。(內心OS:說明書沒寫怎麼辦?)

4 則留言:

  1. 說明書沒寫只能跳坑硬扛XDD

    回覆刪除
  2. 在 4.2.1版, 這個問題似乎沒了..
    看了一下Source Code:

    public virtual string ProfileName { get; }

    加入了 virtual ...

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。