2009-10-20 80 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. 
*/