2016-08-10 3 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 
    } 

} 

내 콘솔 응용 프로그램이 시작되는 것 : 내가 정적에 CreateTicket을 변경하는 경우

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

:

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

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

그래서 나는 처음에이 오류가 여기에

은 백엔드 물건 다른 오류가 발생합니다.

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 속성입니다.

당신은 static에 속성을 변경해야합니다

public static ITicketGenerationService TicketGenerationService { get; set; } 
관련 문제