2016-08-10 4 views
0

У меня возникли проблемы с тем, чтобы мой статический основной метод хорошо играл с моим внутренним кодом.Использование нестатического кода со статическим основным методом

Вот бэкенд материал:

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); 
    } 
} 

Так что я сначала получаю эту ошибку:

An object reference is required for the non-static field, method, or property 'TicketMain.TicketGenerationService'

Если изменить CreateTicket к статическому электричеству , Я получаю еще одну ошибку:

TicketGenerationService does not implment interface member ITicketGenerationService.CreateTicket(DateTime, DateTime). ITicketGenerationService.CreateTicket(DateTime, DateTime) cannot implement an interface member because it is static.

Если я пытаюсь добавить это:

var ticketingService = new TicketGenerationService();

к основной методе, я боюсь, что будет беспорядок с моей инъекцией зависимостей (autofac).

Я понимаю ошибки, но я не могу сделать все статичным, и я боюсь, что если я начну создавать экземпляры, я потеряю все свои данные, которые получаю через инъекцию зависимости.

Есть ли вообще вокруг этого?

Спасибо!

ответ

6

Это не метод TicketGenerationService.CreateTicket, к которому относится ошибка, это ваше имущество TicketGenerationService в классе TicketMain.

Вам просто нужно изменить свойство static:

public static ITicketGenerationService TicketGenerationService { get; set; } 
Смежные вопросы