IsAssembly, IsPublic, IsFamily, IsFamilyOrAssembly, IsFamilyAndAssembly
Я читал об этом, но я не могу понять, что каждый делает. Странная вещь здесь IsFamily
и IsAssembly
возвращает False
в коде, но IsFamilyOrAssembly
возвращается True
.Связь между IsAssembly/IsFamily и IsFamilyOrAssembly
Может кто-нибудь дать объяснение по каждому из этих свойств, поскольку мне трудно понять из документации. Я наткнулся на все это, когда начал читать о Reflection в C#.
public class Example
{
public void m_public() {}
internal void m_internal() {}
protected void m_protected() {}
protected internal void m_protected_public() {}
public static void Main()
{
Console.WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly");
Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}\n",
"", "IsPublic", "IsFamily", "IsFamilyAndAssembly");
foreach (MethodBase m in typeof(Example).GetMethods(
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
{
if (m.Name.Substring(0, 1) == "m")
{
Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
m.Name,
m.IsPublic,
m.IsAssembly,
m.IsFamily,
m.IsFamilyOrAssembly,
m.IsFamilyAndAssembly
);
}
}
}
}
Этот пример кода производит вывод, подобный следующему:
IsAssembly IsFamilyOrAssembly IsPublic IsFamily IsFamilyAndAssembly m_public True False False False False m_internal False True False False False m_protected False False True False False m_protected_public False False False True False
У вас есть вопросы? Какую информацию вы ищете точно и почему, по вашему мнению, эти свойства обеспечат ее? – CodeCaster
@CodeCaster Я не знаю, как еще это изменить. Мне нужно знать функциональность этого и где его можно применять и какая разница между ними – Prabu
Теперь вы обнаружили, что эти свойства являются взаимоисключающими и соответствуют определенным комбинациям модификаторов доступа. Что еще нужно знать? Кроме того, почему вы скопировали код из MSDN, но не запустили его? Выход не соответствует коду. – CodeCaster