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 
    } 

} 

は私のコンソールアプリケーションが開始されます:私は静的に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); 
    } 
} 

は、だから私は最初にこのエラーが発生します。ここ

は、バックエンドのものです、別のエラーが表示されます:

私はこれを追加しようと:mainメソッドへ

var ticketingService = new TicketGenerationService();

は、私は私の依存性注入(autofac)とその意志の混乱怖いです。

私はエラーを理解していますが、すべてを静的にすることはできません。インスタンス化を開始すると、依存性注入によって得られるすべてのデータが失われてしまいます。

とにかくこの周辺にはありますか?

ありがとうございます!

答えて

6

エラーが参照しているTicketGenerationService.CreateTicketメソッドではなく、クラスのTicketGenerationServiceプロパティです。

あなただけstaticにあなたのプロパティを変更する必要があります。

public static ITicketGenerationService TicketGenerationService { get; set; } 
関連する問題