我在使用静态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更改为静态,我会收到另一个错误:
TicketGenerationService不会实现接口成员 ITicketGenerationService.CreateTicket(DateTime,DateTime)。 ITicketGenerationService.CreateTicket(DateTime,DateTime)不能 实现一个接口成员,因为它是静态的。
如果我尝试添加此内容:
var ticketingService = new TicketGenerationService();
到主要的方法,我担心会搞乱我的依赖注入(autofac)。
我理解错误,但我无法使所有内容保持静态,我担心如果我开始实例化,我将失去通过依赖注入获得的所有数据。
到底有没有?
谢谢!
答案 0 :(得分:6)
它不是错误所指的TicketGenerationService.CreateTicket
方法,而是TicketGenerationService
类中的TicketMain
属性。
您只需将房产更改为static
:
public static ITicketGenerationService TicketGenerationService { get; set; }