2016-08-04 8 views
0

Kann mir jemand die Rolle von und Create() in diesem Code beschreiben?Was bedeuten base ["Description"] und Create (username)?

public class UserProfile : ProfileBase 
{ 
    public static UserProfile GetUserProfile(string username) 
    { 
     return Create(username) as UserProfile; 
    } 

    [SettingsAllowAnonymous(false)] 
    public string Description 
    { 
     get { return base["Description"] as string; } 
     set { base["Description"] = value; } 
    } 

} 

Antwort

0

Die base["Description"] Syntax ist, was als Indexer in .NET bekannt ist. Sie können Indexer auf Ihre eigenen Klassen definieren mit einer Eigenschaft Erklärung mit der this Schlüsselwörter wie:

public class MyClass 
{ 
    //indexer (could use int or anything else that your underlying collection supports) 
    public string this[string index] 
    { 
     get 
     { 
      //retrieve from internal cache/collection/etc based on index 
     } 
     set 
     { 
      //set internal cache/collection/etc based on index and value 
     } 
    } 
} 

und dann verwenden, wie

var myclass = new MyClass(); 
var value = myclass["index"]; 
myclass["another"] = "new value"; 

In Ihrem Beispiel ProfileBase einen Indexer definiert hat, und UserProfile ist Zugriff über das Schlüsselwort base, da ProfileBase die Basisklasse UserProfile ist.

+0

bitte beschreiben 'Create (username)'? –

+0

@mojtabasabet Beschreibungsmethode 'Create' - dies ist eine Methode mit nicht-kreativem Namen, erstellt möglicherweise Instanz des Profils für den gegebenen Benutzernamen. Kann entweder die Verwendung eines Entwurfsmusters oder das völlige Fehlen eines Verständnisses von Konstruktoren demonstrieren. Akzeptiert wahrscheinlich eine einzelne Zeichenfolge als Parameter, kann aber mehr mit den Standardwerten haben. Sieht nicht sexy oder übermäßig schlau aus - nur Ihre durchschnittliche Methode. Die Verwendung wird dich nicht in einer Menschenmenge hervorheben. –

0

Mit base Stichwort Sie eine Basisklasse Implementierung der Eigenschaft/Methode/Mitglied rufen/zugreifen.

+0

In diesem Beispiel enthält meine Basisklasse 'ProfileBase' keine Description-Eigenschaft/Methode oder Member. Wie ich weiß, um auf die Basisklasseneigenschaft oder -methode zuzugreifen, müssen wir 'base.methodname()' nicht 'base ["Methodenname"] ' –

+0

@mojtabasabet verwenden, das hängt davon ab. Veröffentlichen Sie Ihre Basisklasse 'ProfileBase' Definition. – Rahul

Verwandte Themen