2013-09-05 47 views
0

默認情況下,在c#中,所有類都繼承ToString()方法。我遇到的問題是,我們正在使用automapper將一些域對象映射到前端。我不斷看到與以下sudo非常相似的代碼。在自動ToString()方法上強制出現語法錯誤

string:mapToclass.name <- mapFromClass 

的問題是,雖然我在等字符串從我被髮送的類型有自動給字符串方法進行映射。正確的代碼應該類似於以下內容。

string:mapToclass.name <- mapFromClass.name 

不幸的是,因爲ToString法這兩種編譯和運行的自動繼承。我雖然可能會重寫字符串來拋出一個未實現的異常,但它不是一個好的設計並且會中斷lsp,而且它在編譯時仍然不會捕獲錯誤,這會更加理想。

任何想法,我可能會強制執行此?

+0

您需要在您需要的類上自己重寫'ToString',或者查找獲取值並更改其工作方式的代碼。 – gunr2171

+0

另外,除非您自己編譯器,否則無法創建'Syntax Error'。你的意思是運行時異常。 – gunr2171

+0

您可以添加創建sudo語法錯誤的代碼規則,我們已經在這裏做了,但我不確定在這種情況下如何實現它。 – user2280611

回答

0

如果我正確地閱讀這個,那麼你可以在AutoMapper中爲這樣的情況手動指定一個映射。

Mapper.CreateMap<MapFromClass, MapToClass>().ForMember(dest => dest.name, opt => opt.MapFrom(src => src.name)); 

這將顯式映射從MapFromClass上的屬性到MapToClass。 More information on this question.

+0

是的,這是目前它應該如何工作,但這也將編譯。 Mapper.CreateMap ()。ForMember(dest => dest.name,opt => opt.MapFrom(src => src)); 因爲一切都有一個默認的字符串方法。 – user2280611

+0

啊,我明白你現在說的話。我目前無法測試,但您可以嘗試Mapper.AssertConfigurationIsValid();.根據https://github.com/AutoMapper/AutoMapper/wiki/Configuration-validation中的文檔AutoMapper檢查以確保每個目標類型成員在源類型上都有對應的類型成員。 –