访问者的可访问性错误

时间:2010-11-29 03:50:50

标签: c#

我的程序中有以下代码行

public Chromosome NewChromosome { get; public set; }

会出现以下错误:

  

错误1

     

'ARP_TLL.DataAccess.ChromosomeAddedEventArgs.NewChromosome.set'访问者的辅助功能修饰符必须比属性或索引器'ARP_TLL.DataAccess.ChromosomeAddedEventArgs.NewChromosome'

更具限制性      

C:\Users\kiangtengl\Programming\Projects\ARP_TLL\ARP_TLL\DataAccess\ChromosomeAddedEventArgs.cs

     

16
  55个
  ARP_TLL

我已尝试修改访问者和属性的辅助功能修饰符,但我无法解决问题。

供参考,这里是类型Chromosome

public class Chromosome
{
    #region properties

    public int Length
    {
        get;
        set;
    }

    public int Number
    {
        get;
        set;
    }

    #endregion

    #region creation

    public static Chromosome CreateChromosome(int _length, int _number)
    {
        return new Chromosome
        {
            Length = _length, Number = _number, 
        };
    }
    #endregion
}

2 个答案:

答案 0 :(得分:5)

public访问修饰符放在setter上:

public Chromosome NewChromosome { get; set; }

默认情况下,属性访问者的访问修饰符被赋予与属性本身相同的访问修饰符。如果您选择为访问者设置显式访问修饰符,则它必须比属性的访问修饰符更具限制性。

答案 1 :(得分:3)

public移除public set或使其比public更具限制性。在

[property_access_modifier] property_type property_name {
    [get_accessor_modifier] get;
    [set_accessor_modifier] set;
}

必须是get_accessor_modifierset_accessor_modifierproperty_access_modifier更具限制性。在您的情况下,property_access_modifierpublic,因此get_accessor_modifierset_accessor_modifier必须为protectedinternalprotected internal或{{ 1}}。

请注意,如果省略private,则默认为property_access_modifierprivateget_accessor_modifier默认为set_accessor_modifier,如果省略它们。