У меня есть небольшое консольное приложение, с которым я работаю, просто чтобы узнать что-то новое.
В приведенном ниже коде, в Console.WirteLine()
, если я тестирую t.IsAbstract
или t.IsSealed
, мойвывод AbstractClass true
или SealedClass true
соответственно.Все остальные возвращают false
, как я ожидаю.
Однако, если я проверю t.IsPublic
, все, включая PublicClass
и PublicInterface
, возвращает false
. Почему это?
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ConsoleApplication1
{
class Test
{
static void Main(string[] args)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] assemblyTypes = assembly.GetTypes();
foreach (Type t in assemblyTypes)
Console.WriteLine(t.Name + " " + t.IsPublic);
Console.ReadKey();
}
private class PrivateClass { }
public class PublicClass { }
protected class ProtectedClass { }
sealed class SealedClass { }
abstract class AbstractClass { }
interface myInterface { }
public interface PublicInterface { }
}
}