DoctorPrisme
DoctorPrisme

Reputation: 103

Interface with a list as property

I want to implement an interface that's quite simple :

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 tells me that Models.artisan does not implement interface member Models.IProfession.jobSkills.

Why? I have tried this too :

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");
    }
}

but it does not work either (same error). can someone explain what I'm missing? Thank you

Upvotes: 0

Views: 456

Answers (2)

mybirthname
mybirthname

Reputation: 18137

You need

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

Also in your method you need to initialize the list.

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");
}

Upvotes: 1

nvoigt
nvoigt

Reputation: 77364

Your interface requires a property jobSkills. You will need to implement a property then:

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

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

    public void SetSkills()
    {
    }
}

Upvotes: 2

Related Questions