类型字符串不能被构造

本文关键字:不能 字符串 类型 | 更新日期: 2023-09-27 18:09:33

嗨,我正在创建一个web api与unity dll,当我整合这个第一个我已经面临

无法加载文件或程序集"System.Web"。Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(Exception from HRESULT: 0x80131040)

错误,我已经解决了添加:

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

在web配置文件中,之后我运行应用程序和我得到的错误如下

不能构造String类型。您必须配置容器以提供此值。

然后我上网搜索,我添加了:

[InjectionConstructor]

的构造函数,它不能解决问题我使用的是ApiController,控制器代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Configuration;
using Microsoft.Practices.Unity;

namespace Check.Api.Controllers
{
    public class CommonController : ApiController
    {
        #region Variables
        /// <summary>
        /// Business layer of .
        /// </summary> 
        private IBLPIP _blPIP;
        private IBLCommon _blCommon;
        #endregion
        #region Constructor
        /// <summary>
        /// Constructor of Login API Controller
        /// </summary>
        /// <param name="auth"></param>
         [InjectionConstructor]
        public CommonController( IBLCommon blCommon)
        {
            this._blCommon = blCommon;
        }
        #endregion
        #region Methods
        [HttpGet]
        public HttpResponseMessage Get_CountryList()
        {
            try
            {
                List<Country> CountryList = _blCommon.GetCountryList();
                return Request.CreateResponse<List<Country>>(HttpStatusCode.OK, CountryList);
            }
            catch (Exception ex)
            {
                LogUtil.Error("LoginServiceController''Login'n" + ex.Message);
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
        }
        #endregion
    }
}

谁来帮帮我,提前谢谢。

类型字符串不能被构造

不能构造String类型。您必须配置容器以提供此值。

该错误表明您正在将字符串传递给一个或多个类的构造函数(这里没有显示)。

解决方案是配置Unity将字符串注入到你的类中。

public class SomeType : ISomeType
{
    private readonly string someString;
    public SomeType(string someString)
    {
        this.someString = someString;
    }
}
string someString = "This is a string value";
container.RegisterType<ISomeType, SomeType>(
    "someString", new InjectionConstructor(someString));

字符串和基本类型需要手动注入,因为Unity不知道你打算注入哪个字符串。