2009-10-20 78 views
88

我有包含屬性Version的接口IResourcePolicy。我要實現這個屬性包含值,代碼寫在其他頁面:如何在接口中實現屬性

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

我如何實現財產version

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

你爲什麼要實現該接口的東西嗎?在那裏你只是指定接口... –

回答

209

在該界面中,您所指定的屬性:

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

在實現類,你需要實現它:

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

這看起來相似,但它是完全不同。在界面中,沒有代碼。你只要指定有一個屬性有一個getter和一個setter,無論他們會做什麼。

在課堂上,你實際上實現了它們。最簡單的方法是使用這個{ get; set; }語法。編譯器將創建一個字段併爲其生成getter和setter實現。

+0

How do you say版本是在課堂上公開嗎?啊,我看到我的問題:如果你明確實現了接口*(例如'IResourcePolicy.Version',你不能定義它是否公開。 – PeterX

+1

你是對的,它應該是公開的,我修正了它。因爲它與我試圖解釋的東西沒有關係 –

+2

當然,它是相關的!如果你想提供一個很好的答案,你需要讓它變得簡單,所以他們不會偶然發現下一個問題。 – Bitterblue

12

接口不能包含任何實現(包括默認值)。您需要切換到抽象類。

+0

那我怎麼能在其他地方實現此屬性 – peter

+0

創建一個類@petr實現該接口,比創建該類的實例並分配給具有接口類型的變量 –

+0

意味着你可以顯示我的代碼 – peter

17

您的意思是這樣的?

class MyResourcePolicy : IResourcePolicy { 
    private string version; 

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

這個我知道,但我已經分配的值,例如irp.WrmVersion =「10.4」;看到我的問題,,我不需要失去那個價值,,我必須通過它 – peter

0
  • 但我已經分配了值,例如irp.WrmVersion =「10.4」;

J.Random編碼器的答案和初始化版本字段。


private string version = "10.4'; 
1

在接口使用屬性的簡單例子:

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