Как реализовать свойство в интерфейсе
У меня есть интерфейс 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.