Только что столкнулся с другим примером, где равно разнице между этими двумя при использовании из XAML в WPF.
XAML:
<Button Tag="{x:Static vm:Foo+Bar.e1}" />
Код с internal
перечислением успешно компилируется:
internal class Foo
{
internal enum Bar
{
e1,
e2,
}
}
Но неожиданно изменение его на public
приводит к ошибке:
internal class Foo
{
public enum Bar
{
e1,
e2,
}
}
Последний пример выдает ошибку компиляции:
ошибка MC3064: в разметке могут использоваться только публичные или внутренние классы. Тип 'Bar' не является публичным или внутренним.
К сожалению, я не могу объяснить, что не так с public
в этом случае. Я думаю, «только потому, что так работает WPF». Просто измените модификатор вложенного класса на internal
, чтобы избавиться от ошибки.