Архив рубрики: Software

Visual Studio: Property type is less accessible than property

В коде компилятор подчёркивает ошибку в классе в следующей строке:

public FWProtocol Protocol { get; set; }
Error CS0053 Inconsistent accessibility: property type ‘FWProtocol’ is less accessible than property ‘FirewallRule.Protocol’

 

Данную ошибку я редко, но встречаю. Причина этого в том, что, при создании класса FWProtocol был сгенерирован файл, в котором модификатор класса был не public, а internal, а я не обратил внимание и не заменил его:

internal class FWProtocol
{
	public FirewallProtocol Protocol;
	public FWProtocol() { }
	public FWProtocol(FirewallProtocol protocol)
	{
		Protocol = protocol;
	}
}

Для исправления этой ошибки нужно было сменить модификатор на public. Чтобы в будущем на наступать опять на эти грабли, я решил исправить сам шаблон нового класса:

C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    class $safeitemrootname$
    {
    }
}

Добавляем модификатор public в этот шаблон:

C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
    }
}