2009-10-20 24 views
88

Tengo la interfaz IResourcePolicy que contiene la propiedad Version. Tengo que poner en práctica esta propiedad, que contiene el valor, el código escrito en otras páginas:Cómo implementar una propiedad en una interfaz

IResourcePolicy irp(instantiated interface) 
irp.WrmVersion = "10.4"; 

¿Cómo puedo aplicar la propiedad version?

public interface IResourcePolicy 
{ 
    string Version 
     { 
      get; 
      set; 
     } 
} 
+0

¿Por qué desea implementar cualquier cosa en la interfaz? Ahí solo especifique la interfaz ... –

Respuesta

209

En la interfaz, se especifica la propiedad:

public interface IResourcePolicy 
{ 
    string Version { get; set; } 
} 

En la clase que implementa, es necesario ponerlo en práctica:

public class ResourcePolicy : IResourcePolicy 
{ 
    public string Version { get; set; } 
} 

Esto es similar, pero es algo completamente diferente. En la interfaz, no hay código. Simplemente especifica que hay una propiedad con un getter y un setter, lo que sea que hagan.

En la clase, realmente los implementa. La forma más rápida de hacerlo es usando esta sintaxis { get; set; }. El compilador creará un campo y generará la implementación getter y setter para él.

+0

¿Cómo se dice que 'Version' es público en la clase? Ahh, veo mi problema: si implementa la interfaz * explícitamente (por ejemplo, 'IResourcePolicy.Version', no puede definir si es pública. – PeterX

+1

Tiene razón, debería ser pública. Lo arreglé. No lo hice. Me importa mucho esto, porque no es relevante para las cosas que traté de explicar. –

+2

Por supuesto que es relevante. Si quiere dar una buena respuesta, debe simplificarla para que la gente no se tropiece con el próximo problema – Bitterblue

12

Las interfaces no pueden contener ninguna implementación (incluidos los valores predeterminados). Debes cambiar a clase abstracta.

+0

¿Qué es cómo puedo implementar esta propiedad en otro lugar? – peter

+0

crear una clase @petr que implemente esa interfaz, que crear una instancia para esa clase y asignar a la variable que tiene tipo de interfaz –

+0

significa que puede mostrar me el código – peter

17

¿Te refieres a esto?

class MyResourcePolicy : IResourcePolicy { 
    private string version; 

    public string Version { 
     get { 
      return this.version; 
     } 
     set { 
      this.version = value; 
     } 
    } 
} 
+1

esto lo sé, pero ya he asignado valores tales que irp.WrmVersion = "10.4"; ver mi pregunta, no necesito perder ese valor, tengo que pasarlo – peter

0
  • pero ya he asignado valores tales que irp.WrmVersion = "10.4";

J.Random Campo de respuesta e inicialización del codificador.


private string version = "10.4'; 
1

El ejemplo sencillo del uso de una propiedad en una interfaz:

using System; 
interface IName 
{ 
    string Name { get; set; } 
} 

class Employee : IName 
{ 
    public string Name { get; set; } 
} 

class Company : IName 
{ 
    private string _company { get; set; } 
    public string Name 
    { 
     get 
     { 
      return _company; 
     } 
     set 
     { 
      _company = value; 
     } 
    } 
} 

class Client 
{ 
    static void Main(string[] args) 
    { 
     IName e = new Employee(); 
     e.Name = "Tim Bridges"; 

     IName c = new Company(); 
     c.Name = "Inforsoft"; 

     Console.WriteLine("{0} from {1}.", e.Name, c.Name); 
     Console.ReadKey(); 
    } 
} 
/*output: 
Tim Bridges from Inforsoft. 
*/ 
Cuestiones relacionadas