2010-04-28 6 views
-1

j'ai une interfaceInterface générique avec la propriété

/// <summary> 
/// Summary description for IBindable 
/// </summary> 
public interface IBindable<T> 
{ 
    // Property declaration: 
    T Text 
    { 
     get; 
     set; 
    } 
} 

Maintenant, je veux mettre en œuvre cette interface dans ma classe

public class MyTextBox :IBindable<string> 
{ 
    //now i how can i implement Text peroperty here 
} 

Je ne veux pas mettre en œuvre comme

string IBindable<string>.Text 
{ 
    get { return "abc";} 
    set { //assigne value } 
} 

Je veux l'implémenter comme

public string Text 
{ 
    get{} set {} 
} 
+0

Je ne peux pas saisir le problème ... vous pouvez faire ce que vous avez dit. .. – digEmAll

+0

Quelle est la question ici? –

+0

Je suppose que l'OP n'a pas réalisé que c'était valide ... –

Répondre

5

Vous êtes libre de le faire. Ceci est une implémentation d'interface implicite.

Ce qui suit est valide C#:

public interface IBindable<T> 
{ 
    // Property declaration: 
    T Text 
    { 
     get; 
     set; 
    } 
} 

public class MyTextBox : IBindable<string> 
{ 

    public string Text 
    { 
     get; 
     set; 
    } 
} 

Lorsque vous implémentez une interface, vous êtes libre de mettre en œuvre implicitement, comme ci-dessus, ou explicitement, ce qui serait votre deuxième option:

string IBindable<string>.Text 
{ get { return "abc";} set { // assign value } } 

La différence est dans l'utilisation. Lorsque vous utilisez la première option, la propriété Text devient une propriété visible publiquement sur le type lui-même (MyTextBox). Cela permet:

MyTextBox box = new MyTextBox(); 
box.Text = "foo"; 

Cependant, si vous implémentez explicitement, vous devez utiliser votre interface directement:

MyTextBox box = new MyTextBox(); 
IBindable<string> bindable = box; 
box.Text = "foo"; // This will work in both cases 
2
public class MyTextBox : IBindable<string> 
{ 
    //now i how can i implement Text peroperty here 
    public string Text 
    { 
     get; 
     set; 
    } 
} 
Questions connexes