2016-12-19 1 views
0

Ich bin eine Controller-Klasse, die wieHinzufügen und Laden von Objekten aus ASP.NET Session über Attribute

class MyController : Controller 
{ 
    User user 
    { 
     get 
     { 
     if(Session["User"] == null) 
      Session["User"] = // Constructing object here 
     return Session["User"]; 
     } 
    } 

    .... 
} 

Ich habe viele Eigenschaften wie Benutzer in diesem Controller. Ich möchte ohne all dies

Geräusche bekommen. Es könnte etwas mit dem Attribut sein wie

class MyController : Controller 
{ 
    [SessionCacheObject("User")] 
    User user; 
} 

Wie kann ich dies tun oder gibt es eine andere intelligente Art und Weise?

+0

(Unrelated zu dem, was Sie suchen), wenn Sie C# 6, verwenden könnte dies eine gute Nutzung der 'nameof' Funktion, um zu bekommen, der‚magischen Strings‘befreien. – GDS

Antwort

0

Schauen Sie sich meine Benutzersitzung an.

public static aspnet_Users LogInUser 
     { 
      get 
      { 
       if (HttpContext.Current.Session["LogInUser"] != null) 
       { 
        return (aspnet_Users)HttpContext.Current.Session["LogInUser"]; 
       } 
       else 
       { 
        return null; 
       } 
      } 
      set 
      { 
       HttpContext.Current.Session["LogInUser"] = value; 
      } 

     } 

Jetzt, wann immer Daten zur Sitzung hinzufügen wie unten.

LogInUser = user; // get data from wherever you need and set it. 
+0

Das ist fast das, was ich geschrieben habe. Ich möchte immer noch das If-Else-Muster abstrahieren, das immer für jede Eigenschaft erscheint. –

+0

vielleicht ist es möglich, aber es ist immer noch nicht eine gute Praxis, solche Art von Code hinzuzufügen, weil es keinen Sinn macht zu entfernen, wenn sonst, haben Sie einen bestimmten Grund? – Bharat

Verwandte Themen