場(chǎng)景是; VS2017、MVC 5、StructureMap.MVC5我收到以下錯(cuò)誤:構(gòu)建類型 BLL.MMCodes.MMCodesService 時(shí)出錯(cuò)。" InnerException {"值不能為空。\r\n參數(shù)名稱:字符串"}嘗試運(yùn)行我的應(yīng)用程序時(shí)出現(xiàn)在“DoGetInstance”函數(shù)中。protected override object DoGetInstance(Type serviceType, string key) { IContainer container = (CurrentNestedContainer ?? Container); if (string.IsNullOrEmpty(key)) { return serviceType.IsAbstract || serviceType.IsInterface ? container.TryGetInstance(serviceType) : container.GetInstance(serviceType); } return container.GetInstance(serviceType, key); }服務(wù)和接口namespace BLL.MMCodes{ public interface IMMCodesService { bool ValidateAgainstBizRules(string MMCode, out string errorMessage); bool _UseEF { get; set; } }public class MMCodesService : IMMCodesService{ private string errorMessage; public MMCodesService() { ValidateAgainstBizRules( MMCode, out errorMessage); } #region vars public string MMCode { get; set; } private bool IsValid { get; set; } private List<string> Validations = new List<string>(); #endregion public bool _UseEF { get; set; } public bool ValidateAgainstBizRules(string mmCode, out string errorMessage) {....}控制器using System.Collections.Generic;using System.Web.Mvc;using BLL.MMCodes;using BusinessLayerDemoProject.Models;namespace BusinessLayerDemoProject.Controllers{ public class MMCodeController : Controller { private IMMCodesService _iService; public MMCodeController(IMMCodesService service) { this._iService = service; this._iService._UseEF = true; }我已經(jīng)嘗試了來自整個(gè)論壇的幾個(gè)建議,例如。更改中的屬性StructureMapDependencyScope以適應(yīng) HTTPContext 和 CurrentNestedContainer 屬性中的 null,但沒有成功。
1 回答

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
問題是這個(gè)代碼:
public MMCodesService()
{
ValidateAgainstBizRules( MMCode, out errorMessage);
}
構(gòu)造函數(shù)中的代碼拋出異常。因此StructureMap無法將其傳遞給依賴于它的那些對(duì)象。
因此,您可以修復(fù)代碼以使其不引發(fā)異常。
但是……
我?guī)缀蹩梢钥隙ùa應(yīng)該被刪除/注釋掉。代碼在構(gòu)造函數(shù)中被調(diào)用。因此,根據(jù)定義,MMCode尚未設(shè)置 - 因此對(duì)其進(jìn)行任何類型的驗(yàn)證都是毫無意義的。因此,我建議將代碼更改為:
public MMCodesService()
{
}
- 1 回答
- 0 關(guān)注
- 198 瀏覽
添加回答
舉報(bào)
0/150
提交
取消