各位大神:
我想问下.Net Core 2.1委托调用方法是报错,以下是保存信息和源码,求各位大神指导一下,没有用第三方框架。
System.PlatformNotSupportedException: Operation is not supported on this platform.
at Uwl.Common.LogsMethod.Log.dgWriteLog.BeginInvoke(Logs logs, AsyncCallback callback, Object object)
at Uwl.Common.LogsMethod.Log.Add(Logs logs) in F:\Project\Uwl.WebApi\I_Sfront.WebApi\Uwl.Common\LogsMethod\Log.cs:line 33
at Uwl.Common.LogsMethod.Log.Add(String Title, String Contents, Types types, String oldXML, String newXML) in F:\Project\Uwl.WebApi\I_Sfront.WebApi\Uwl.Common\LogsMethod\Log.cs:line 60
at Iview.WebApi.Controllers.AuthorizeController.Token(LoginViewModel loginViewModel) in F:\Project\Uwl.WebApi\I_Sfront.WebApi\Iview.WebApi\Controllers\AuthorizeController.cs:line 62
委托调用建议使用Func<>这个方法,更清晰呦
大佬 可以给写一个demo嘛?刚毕业的学生呢!不太会用,
@梦梦宝宝: 你直接调用add方法不行吗?干啥还要加委托?func的用法百度一下就行,我给你找了一个https://www.cnblogs.com/LipeiNet/p/4694225.html
@梦梦宝宝:
public static void Add(Logs logs)
{
dgWriteLog writeLog = new dgWriteLog(add);
writeLog.Invoke(logs);
}
改成这样就可以了
@老六代码: 好的 蟹蟹 大佬
@梦梦宝宝: 采纳一下哈
@老六代码: 嗯嗯 好的
@梦梦宝宝: 大佬 你帮忙看下 我知道那个问题为什么报出来了,注入没有成功
@梦梦宝宝:
你有在services里添加注入吗?
@老六代码: 有注入的
@梦梦宝宝:
代码贴出来
@老六代码: 18790997531方便加个微信吗?我晚上回到家了给你截图过去
@梦梦宝宝: 注入的代码贴出来
@老六代码: 好的,老哥,我晚上回去截图给你贴出来
@梦梦宝宝:
嗯,不过还是提示你一下,跟你你的代码,注入应该是这样的
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<Log>();
services.AddTransient<ILogsServer,LogsServer>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
还有,既然你用了依赖注入,Log类中就不该有静态方法,静态变量了,你应该把Log,注入到控制器中,像这样:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace ServerProvider.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private Log _log;
public ValuesController(Log log)
{
_log = log;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_log.Add(new Logs { Id = "123", Contents = "123" });
return new string[] { "sucess" };
}
}
public class Log
{
private delegate void dgWriteLog(Logs logs);
public void add(Logs logs)
{
//_LogsServer.Inserver(logs);
}
public void Add(Logs logs)
{
dgWriteLog writeLog = new dgWriteLog(add);
writeLog.Invoke(logs);
}
}
public class Logs
{
public string Id { get; set; }
public string Contents { get; set; }
}
}
@梦梦宝宝: 依赖注入的思想就是,哪儿用就在哪儿注入