Как реализовать свойство в интерфейсе

У меня есть интерфейс IResourcePolicy, содержащий свойство Version. Я должен реализовать это свойство, которое содержит значение, код, написанный на других страницах:

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

Как я могу реализовать свойство Version?

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

Ответы

Ответ 1

В интерфейсе вы указываете свойство:

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

В классе реализации вам необходимо реализовать его:

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

Это выглядит похоже, но это нечто совершенно другое. В интерфейсе отсутствует код. Вы просто указываете, что есть свойство с геттером и сеттером, что бы они ни делали.

В классе вы фактически реализуете их. Самый короткий способ сделать это - использовать синтаксис { get; set; }. Компилятор создаст поле и сгенерирует реализацию getter и setter.

Ответ 2

Ты имеешь в виду вот это?

class MyResourcePolicy : IResourcePolicy {
    private string version;

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

Ответ 3

Интерфейсы не могут содержать никакой реализации (включая значения по умолчанию). Вам нужно переключиться на абстрактный класс.

Ответ 4

Простой пример использования свойства в интерфейсе:

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.
 */

Ответ 5

  • но я уже назначил такие значения, что irp.WrmVersion = "10.4";

Ядро ответа на JRandom Coder и инициализацию версии.


private string version = "10.4';

Ответ 6

Вы должны использовать абстрактный класс для инициализации свойства. Вы не можете инициировать в Inteface.