与列表作为属性的接口

时间:2016-12-08 12:46:37

标签: c# list inheritance interface

我想实现一个非常简单的界面:

public interface IProfession
{
    List<string> jobSkills { get; set; }
    void setSkills();
}


public class artisan : IProfession
{
    int money = 1200;

    public List<string> jobSkills;

    public void setSkills(){
        jobSkills.Add("baratin");
        jobSkills.Add("marchandage");
        jobSkills.Add("monde_naturel");
        jobSkills.Add("royaume_natal");
        jobSkills.Add("sagacite");
        jobSkills.Add("statut");
        jobSkills.Add("statut");
    }
}

Vstudio告诉我,Models.artisan没有实现接口成员Models.IProfession.jobSkills。

为什么呢?我也试过这个:

public class artisan : IProfession
{
    int money = 1200;

    protected List<string> jobSkills;

    public List<string> _jobSkills
{ 
    get { return jobSkills;}
    set { jobSkills = value; }
} 

    public void setSkills(){
        jobSkills.Add("baratin");
        jobSkills.Add("marchandage");
        jobSkills.Add("monde_naturel");
        jobSkills.Add("royaume_natal");
        jobSkills.Add("sagacite");
        jobSkills.Add("statut");
        jobSkills.Add("statut");
    }
}

但它也不起作用(相同的错误)。谁能解释我失踪的东西? 谢谢

2 个答案:

答案 0 :(得分:2)

您的界面需要属性 jobSkills。您需要实现属性,然后:

public interface IProfession
{
    List<string> JobSkills { get; set; }
    void SetSkills();
}    

public class Artisan : IProfession
{
    public List<string> JobSkills { get; set; };

    public void SetSkills()
    {
    }
}

答案 1 :(得分:1)

你需要

public List<string> jobSkills { get; set; }

同样在您的方法中,您需要初始化列表。

public void setSkills()
{
    if(jobSkills == null)
       jobSkills = new List<string>();

    jobSkills.Add("baratin");
    jobSkills.Add("marchandage");
    jobSkills.Add("monde_naturel");
    jobSkills.Add("royaume_natal");
    jobSkills.Add("sagacite");
    jobSkills.Add("statut");
    jobSkills.Add("statut");
}