【问题标题】:Error CS0832 An expression tree may not contain an assignment operator错误 CS0832 表达式树可能不包含赋值运算符
【发布时间】:2018-07-28 21:23:31
【问题描述】:
public class ConsoleRegistry : Registry
{
    public ConsoleRegistry()
    {
        Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.WithDefaultConventions();
        });

        For<IJobFactory>().Use<StructureMapJobFactory>();

        For<ISchedulerFactory>().Use(ctx => new StdSchedulerFactory());
        /*For<IScheduler>().Use(async delegate (IContext ctx)
        {
            var scheduler = await ctx.GetInstance<ISchedulerFactory>().GetScheduler();
            scheduler.JobFactory = ctx.GetInstance<IJobFactory>();
            return scheduler;
        });*/

        ForSingletonOf<IScheduler>().Use(ctx =>
        {
            IScheduler scheduler = ctx.GetInstance<ISchedulerFactory>().GetScheduler().Result;
            scheduler.JobFactory = ctx.GetInstance<IJobFactory>();
            return scheduler;
        });
    }

最后一个ForSingletonOf&lt;IScheduler&gt;()...有什么问题?

我收到了这个错误

错误 CS0832 表达式树可能不包含赋值运算符

【问题讨论】:

  • 你会遇到Task&lt;IScheduler&gt; GetScheduler(); 的问题。基于注释掉的代码。

标签: c# structuremap4


【解决方案1】:

这听起来像是库实现中某处的错误。由于该项目已“取消”,因此您不太可能得到修复,因此请尝试通过引入辅助方法来解决它:

private static IScheduler MakeScheduler(IContext ctx) {
    ... // the code from your lambda goes here
}
...
ForSingletonOf<IScheduler>().Use(ctx => MakeScheduler(ctx));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2011-10-30
    • 2020-07-08
    相关资源
    最近更新 更多