[英]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.