2016-08-08 51 views
0

ich eine Klasse, und in jeder Methode, die ich die folgenden Zeilen wiederholt bin erklärt:C# Objektorientierte Programmierung Deklarieren Eigenschaften

var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails")); 
var engines = new ViewEngineCollection(); 
engines.Add(new FileSystemRazorViewEngine(viewsPath)); 

Wie und wo kann ich sie erklären, so dass es zu jeder Methode vorhanden ist, so dass ich Muss ich nicht immer dieselbe Zeile innerhalb jeder Methode schreiben?

public class EmailService 
{ 
    public EmailService() 
    { 

    } 

    public void NotifyNewComment(int id) 
    { 
     var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails")); 
     var engines = new ViewEngineCollection(); 
     engines.Add(new FileSystemRazorViewEngine(viewsPath)); 

     var email = new NotificationEmail 
     { 
      To = "[email protected]", 
      Comment = comment.Text 
     }; 

     email.Send(); 

    } 

    public void NotifyUpdatedComment(int id) 
    { 
     var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails")); 
     var engines = new ViewEngineCollection(); 
     engines.Add(new FileSystemRazorViewEngine(viewsPath)); 

     var email = new NotificationEmail 
     { 
      To = "[email protected]", 
      Comment = comment.Text 
     }; 

     email.Send(); 

    } 

    } 
+1

Deklarieren Sie sie außerhalb einer Methode, aber innerhalb einer Klasse als öffentlich, privat, ect. nach Bedarf – Jacobr365

Antwort

6

Sie konnten sie auf Klassenebene Mitglieder machen:

public class EmailService 
{ 
    private string viewsPath; 
    private ViewEngineCollection engines; 

    public EmailService() 
    { 
     viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails")); 
     engines = new ViewEngineCollection(); 
     engines.Add(new FileSystemRazorViewEngine(viewsPath)); 
    } 

    public void NotifyNewComment(int id) 
    { 
     var email = new NotificationEmail 
     { 
      To = "[email protected]", 
      Comment = comment.Text 
     }; 

     email.Send(); 
    } 

    // etc. 
} 

Diese Variablen einmal füllen würde, wenn Sie eine neue EmailService erstellen:

new EmailService() 

Dann kann jede Methode für diese Instanz ausgeführt würde die Werte verwenden, die zu dieser Zeit erstellt wurden.

+1

Nur hinzufügen (für diejenigen, die es nicht wissen), die Zuweisungen im obigen Beispiel werden im Konstruktor durchgeführt. –