繁体   English   中英

将非静态代码与静态main方法一起使用

[英]Using non-static code with static main method

我无法让我的静态main方法与后端代码很好地配合使用。

这是后端的东西:

public interface ITicketGenerationService
{
    string CreateTicket(DateTime begin, DateTime end);       
}

public class TicketGenerationService : ITicketGenerationService
{
    public static IRepository<Ticket> Repository { get; set; }

    public TicketGenerationService(IRepository<Ticket> repository)
    {
        Repository = repository;
    }

    public string CreateTicket(DateTime begin, DateTime end)
    {
         //do stuff with Repository
         //return status string to Main method
    }

}

这是我的控制台应用程序开始的位置:

public class TicketMain
{
    public ITicketGenerationService TicketGenerationService { get; set; }

    static void Main(string[] args)
    {
          var priorityOneTickets = TicketGenerationService.CreateTicket(begin, end);
    }
}

所以我最初得到这个错误:

非静态字段,方法或属性“ TicketMain.TicketGenerationService”需要对象引用

如果我将CreateTicket更改为static,则会收到另一个错误:

TicketGenerationService不实施接口成员ITicketGenerationService.CreateTicket(DateTime,DateTime)。 ITicketGenerationService.CreateTicket(DateTime,DateTime)无法实现接口成员,因为它是静态的。

如果我尝试添加此内容:

var ticketingService = new TicketGenerationService();

对于主要方法,恐怕会与我的依赖项注入(autofac)混淆。

我理解这些错误,但是我无法将所有内容都保持静态,因此,如果我开始实例化,恐怕会丢失所有通过依赖注入获得的数据。

有没有办法解决?

谢谢!

错误所指的不是TicketGenerationService.CreateTicket方法,而是TicketMain类中的TicketGenerationService属性。

您只需要将属性更改为static

public static ITicketGenerationService TicketGenerationService { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM