<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FReflection%2FType</id>
		<title>Csharp/CSharp Tutorial/Reflection/Type - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FReflection%2FType"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Reflection/Type&amp;action=history"/>
		<updated>2026-04-30T02:30:39Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Reflection/Type&amp;diff=5962&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Reflection/Type&amp;diff=5962&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Reflection/Type&amp;diff=5963&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Reflection/Type&amp;diff=5963&amp;oldid=prev"/>
				<updated>2010-05-26T12:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==A second form of GetMethods() lets you specify various flags that filter the methods that are retrieved. ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It has this general form:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;MethodInfo[ ] GetMethods(BindingFlags criteria)&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This version obtains only those methods that match the criteria.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;BindingFlags is an enumeration.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Its most commonly used values are shown here:&amp;lt;/p&amp;gt;&lt;br /&gt;
Value&lt;br /&gt;
Meaning&lt;br /&gt;
DeclaredOnly&lt;br /&gt;
Retrieves only those methods defined by the specified class. Inherited methods are not included.&lt;br /&gt;
Instance&lt;br /&gt;
Retrieves instance methods.&lt;br /&gt;
NonPublic&lt;br /&gt;
Retrieves nonpublic methods.&lt;br /&gt;
Public&lt;br /&gt;
Retrieves public methods.&lt;br /&gt;
Static&lt;br /&gt;
Retrieves static methods.&lt;br /&gt;
&lt;br /&gt;
==Cast And OfType==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
    class MainClass&lt;br /&gt;
    {&lt;br /&gt;
        static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            ArrayList list = new ArrayList { &amp;quot;First&amp;quot;, &amp;quot;Second&amp;quot;, &amp;quot;Third&amp;quot;};&lt;br /&gt;
            var strings = list.Cast&amp;lt;string&amp;gt;();&lt;br /&gt;
            foreach (string item in strings)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(item);&lt;br /&gt;
            }&lt;br /&gt;
            list = new ArrayList { 1, &amp;quot;not an int&amp;quot;, 2, 3};&lt;br /&gt;
            var ints = list.OfType&amp;lt;int&amp;gt;();&lt;br /&gt;
            foreach (int item in ints)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(item);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Commonly used methods defined by Type:==&lt;br /&gt;
&lt;br /&gt;
Method&lt;br /&gt;
Purpose&lt;br /&gt;
ConstructorInfo[ ] GetConstructors()&lt;br /&gt;
Obtains a list of the constructors.&lt;br /&gt;
EventInfo[ ] GetEvents()&lt;br /&gt;
Obtains a list of events.&lt;br /&gt;
FieldInfo[ ] GetFields()&lt;br /&gt;
Obtains a list of the fields.&lt;br /&gt;
MemberInfo[ ] GetMembers()&lt;br /&gt;
Obtains a list of the members.&lt;br /&gt;
MethodInfo[ ] GetMethods()&lt;br /&gt;
Obtains a list of methods.&lt;br /&gt;
PropertyInfo[ ] GetProperties()&lt;br /&gt;
Obtains a list of properties.&lt;br /&gt;
&amp;lt;p&amp;gt;Here are several commonly used, read-only properties defined by Type:&amp;lt;/p&amp;gt;&lt;br /&gt;
Property&lt;br /&gt;
Purpose&lt;br /&gt;
Assembly Assembly&lt;br /&gt;
Obtains the assembly.&lt;br /&gt;
TypeAttributes Attributes&lt;br /&gt;
Obtains the attributes.&lt;br /&gt;
Type BaseType&lt;br /&gt;
Obtains the immediate base type.&lt;br /&gt;
string FullName&lt;br /&gt;
Obtains the complete name.&lt;br /&gt;
bool IsAbstract&lt;br /&gt;
Is abstract.&lt;br /&gt;
bool isArray&lt;br /&gt;
Is an array.&lt;br /&gt;
bool IsClass&lt;br /&gt;
Is a class.&lt;br /&gt;
bool IsEnum&lt;br /&gt;
Is an enumeration.&lt;br /&gt;
string Namespace&lt;br /&gt;
Obtains the namespace.&lt;br /&gt;
&lt;br /&gt;
==Create StringBuilder==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main ()&lt;br /&gt;
    {&lt;br /&gt;
        Type type = typeof(StringBuilder);&lt;br /&gt;
        Type[] argTypes = new Type[] { typeof(System.String), typeof(System.Int32) };&lt;br /&gt;
        ConstructorInfo cInfo = type.GetConstructor(argTypes);&lt;br /&gt;
        object[] argVals = new object[] { &amp;quot;Some string&amp;quot;, 30 };&lt;br /&gt;
        // Create the object and cast it to StringBuilder.&lt;br /&gt;
        StringBuilder sb = (StringBuilder)cInfo.Invoke(argVals);&lt;br /&gt;
        Console.WriteLine(sb);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Some string&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamically constructing types==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Reflection.Emit;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type listType = typeof(List&amp;lt;&amp;gt;);&lt;br /&gt;
        Type listOfIntType = listType.MakeGenericType(typeof(int));&lt;br /&gt;
        Console.WriteLine(listOfIntType.FullName);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicK&lt;br /&gt;
eyToken=b77a5c561934e089]]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get all methods from a Type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
   public int Field1;&lt;br /&gt;
   public int Field2;&lt;br /&gt;
   public void Method1() { }&lt;br /&gt;
   public int  Method2() { return 1; }&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      Type t = typeof(MyClass);&lt;br /&gt;
      MethodInfo[] mi = t.GetMethods();&lt;br /&gt;
      foreach (MethodInfo m in mi)&lt;br /&gt;
         Console.WriteLine(&amp;quot;Method: {0}&amp;quot;, m.Name);&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Method: Method1&lt;br /&gt;
Method: Method2&lt;br /&gt;
Method: GetType&lt;br /&gt;
Method: ToString&lt;br /&gt;
Method: Equals&lt;br /&gt;
Method: GetHashCode&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get BaseType, Name, FullName and Namespace for a type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
  static void Main(string[] args)&lt;br /&gt;
  {&lt;br /&gt;
    Object cls1 = new Object();&lt;br /&gt;
    System.String cls2 = &amp;quot;Test String&amp;quot; ;&lt;br /&gt;
    Type type1 = cls1.GetType();&lt;br /&gt;
    Type type2 = cls2.GetType();&lt;br /&gt;
    // Object class output&lt;br /&gt;
    Console.WriteLine(type1.BaseType);&lt;br /&gt;
    Console.WriteLine(type1.Name);&lt;br /&gt;
    Console.WriteLine(type1.FullName);&lt;br /&gt;
    Console.WriteLine(type1.Namespace);&lt;br /&gt;
    // string output&lt;br /&gt;
    Console.WriteLine(type2.BaseType);&lt;br /&gt;
    Console.WriteLine(type2.Name);&lt;br /&gt;
    Console.WriteLine(type2.FullName);&lt;br /&gt;
    Console.WriteLine(type2.Namespace);&lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Object&lt;br /&gt;
System.Object&lt;br /&gt;
System&lt;br /&gt;
System.Object&lt;br /&gt;
String&lt;br /&gt;
System.String&lt;br /&gt;
System&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get/set property using invoke member==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
public class Class1&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        Type type = typeof(MyClass);&lt;br /&gt;
        object o = Activator.CreateInstance(type);&lt;br /&gt;
        type.InvokeMember(&amp;quot;Text&amp;quot;, BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.Public, null, o, new object[] { &amp;quot;Windows Developer Magazine&amp;quot; });&lt;br /&gt;
        string text = (string)type.InvokeMember(&amp;quot;Text&amp;quot;, BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public, null, o, new object[] { });&lt;br /&gt;
        Console.WriteLine(text);&lt;br /&gt;
    }&lt;br /&gt;
    private static void OnChanged(object sender, System.EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(((MyClass)sender).Text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MyClass&lt;br /&gt;
{&lt;br /&gt;
    private string text;&lt;br /&gt;
    public string Text&lt;br /&gt;
    {&lt;br /&gt;
        get { return text; }&lt;br /&gt;
        set&lt;br /&gt;
        {&lt;br /&gt;
            text = value;&lt;br /&gt;
            OnChanged();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private void OnChanged()&lt;br /&gt;
    {&lt;br /&gt;
        if (Changed != null)&lt;br /&gt;
            Changed(this, System.EventArgs.Empty);&lt;br /&gt;
    }&lt;br /&gt;
    public event EventHandler Changed;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get the Type representation: object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Reflection.Emit;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type typeInfo = typeof(object);&lt;br /&gt;
        MethodInfo methInfo = typeInfo.GetMethod(&amp;quot;ToString&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Info: {0}&amp;quot;, methInfo);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Info: System.String ToString()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting generic type definition information==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Reflection.Emit;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(typeof(List&amp;lt;&amp;gt;).Equals(typeof(List&amp;lt;int&amp;gt;).GetGenericTypeDefinition()));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;True&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get Type with typeof==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Globalization;&lt;br /&gt;
  class Class1&lt;br /&gt;
  {&lt;br /&gt;
    DateTime[] dateTimes = new DateTime[10];&lt;br /&gt;
    public DateTime this[int index]&lt;br /&gt;
    {&lt;br /&gt;
      get{ return dateTimes[index]; }&lt;br /&gt;
      set{ dateTimes[index] = value;}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private DateTime dateOfBirth;&lt;br /&gt;
    public DateTime DateOfBirth&lt;br /&gt;
    {&lt;br /&gt;
        get{ return dateOfBirth; }&lt;br /&gt;
        set{ dateOfBirth = value; }&lt;br /&gt;
    }&lt;br /&gt;
      &lt;br /&gt;
    public void Test()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;Test method called&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private string field;&lt;br /&gt;
    &lt;br /&gt;
    public string Property&lt;br /&gt;
    { &lt;br /&gt;
      get{ return field; }&lt;br /&gt;
      set{ field = value; }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
    class MainClass{&lt;br /&gt;
    &lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
      Type type = typeof(Class1);&lt;br /&gt;
      Console.WriteLine(type.FullName);&lt;br /&gt;
      &lt;br /&gt;
      type = Type.GetType(&amp;quot;Class1&amp;quot;);&lt;br /&gt;
      Console.WriteLine(type.Namespace);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Is object a type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main() &lt;br /&gt;
    {&lt;br /&gt;
        Object someObject = new StringReader(&amp;quot;This is a StringReader&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        if (IsType(someObject, &amp;quot;System.IO.TextReader&amp;quot;)) &lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;GetType: someObject is a TextReader&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public static bool IsType(object obj, string type) &lt;br /&gt;
    {&lt;br /&gt;
        Type t = Type.GetType(type, true, true);&lt;br /&gt;
        return t == obj.GetType() || obj.GetType().IsSubclassOf(t);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;GetType: someObject is a TextReader&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtain the handles: object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Reflection.Emit;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type typeInfo = typeof(object);&lt;br /&gt;
        MethodInfo methInfo = typeInfo.GetMethod(&amp;quot;ToString&amp;quot;);&lt;br /&gt;
        RuntimeTypeHandle typeHandle = typeInfo.TypeHandle;&lt;br /&gt;
        RuntimeMethodHandle methHandle = methInfo.MethodHandle;&lt;br /&gt;
        Console.WriteLine(&amp;quot;Handle: {0}&amp;quot;, methHandle);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Handle: System.RuntimeMethodHandle&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtain type information using the Object.GetType method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        StringBuilder sb = new StringBuilder();&lt;br /&gt;
        Type t6 = sb.GetType();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtain type information using the Type.GetType method(Case insensitive, throw TypeLoadException if not found)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type t4 = Type.GetType(&amp;quot;system.string&amp;quot;, true, true);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtain type information using the Type.GetType method(Case sensitive, return null if not found).==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type t2 = Type.GetType(&amp;quot;System.String&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Obtain type information using the Type.GetType method(Case sensitive, throw TypeLoadException if not found)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type t3 = Type.GetType(&amp;quot;System.String&amp;quot;, true);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Open and constructed generic types==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
using System.Reflection.Emit;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Type listType = typeof(List&amp;lt;&amp;gt;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;List&amp;lt;&amp;gt;: {0}, {1}&amp;quot;,listType.IsGenericType, listType.ContainsGenericParameters);&lt;br /&gt;
        Type listIntType = typeof(List&amp;lt;int&amp;gt;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;List&amp;lt;int&amp;gt;: {0}, {1}&amp;quot;,listIntType.IsGenericType, listIntType.ContainsGenericParameters);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;List&amp;lt;&amp;gt;: True, True&lt;br /&gt;
List&amp;lt;int&amp;gt;: True, False&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reflection==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;System.Type is derived from an abstract class called System.Reflection.MemberInfo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MemberInfo defines the following abstract, read-only properties:&amp;lt;/p&amp;gt;&lt;br /&gt;
Return Type&lt;br /&gt;
Method Name&lt;br /&gt;
Meanings&lt;br /&gt;
Type&lt;br /&gt;
DeclaringType&lt;br /&gt;
The type of the class or interface in which the member is declared.&lt;br /&gt;
MemberTypes&lt;br /&gt;
MemberType&lt;br /&gt;
The type of the member.&lt;br /&gt;
string&lt;br /&gt;
Name&lt;br /&gt;
The name of the type.&lt;br /&gt;
Type&lt;br /&gt;
ReflectedType&lt;br /&gt;
The type of the object being reflected.&lt;br /&gt;
&amp;lt;p&amp;gt;MemberTypes is an enumeration:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;MemberTypes.Constructor&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;MemberTypes.Method&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;MemberTypes.Field&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;MemberTypes.Event&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;MemberTypes.Property&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Type: FullName, BaseType, IsAbstract, IsCOMObject, IsSealed, IsClass==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Reflection;&lt;br /&gt;
public interface IFaceOne&lt;br /&gt;
{&lt;br /&gt;
  void MethodA();&lt;br /&gt;
}&lt;br /&gt;
public interface IFaceTwo&lt;br /&gt;
{&lt;br /&gt;
  void MethodB();&lt;br /&gt;
}&lt;br /&gt;
public class MyClass: IFaceOne, IFaceTwo&lt;br /&gt;
{&lt;br /&gt;
  public enum MyNestedEnum{}&lt;br /&gt;
  &lt;br /&gt;
  public int myIntField;&lt;br /&gt;
  public string myStringField;&lt;br /&gt;
  public void myMethod(int p1, string p2)&lt;br /&gt;
  {&lt;br /&gt;
  }&lt;br /&gt;
  public int MyProp&lt;br /&gt;
  {&lt;br /&gt;
    get { return myIntField; }&lt;br /&gt;
    set { myIntField = value; }&lt;br /&gt;
  }&lt;br /&gt;
  void IFaceOne.MethodA(){}&lt;br /&gt;
  void IFaceTwo.MethodB(){}&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
  public static void Main(string[] args)&lt;br /&gt;
  {&lt;br /&gt;
    MyClass f = new MyClass();&lt;br /&gt;
    Type t = f.GetType();&lt;br /&gt;
    Console.WriteLine(&amp;quot;Full name is: {0}&amp;quot;, t.FullName);&lt;br /&gt;
    Console.WriteLine(&amp;quot;Base is: {0}&amp;quot;, t.BaseType);&lt;br /&gt;
    Console.WriteLine(&amp;quot;Is it abstract? {0}&amp;quot;, t.IsAbstract);&lt;br /&gt;
    Console.WriteLine(&amp;quot;Is it a COM object? {0}&amp;quot;, t.IsCOMObject);&lt;br /&gt;
    Console.WriteLine(&amp;quot;Is it sealed? {0}&amp;quot;, t.IsSealed);&lt;br /&gt;
    Console.WriteLine(&amp;quot;Is it a class? {0}&amp;quot;, t.IsClass);&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Full name is: MyClass&lt;br /&gt;
Base is: System.Object&lt;br /&gt;
Is it abstract? False&lt;br /&gt;
Is it a COM object? False&lt;br /&gt;
Is it sealed? False&lt;br /&gt;
Is it a class? True&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==type identity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Runtime type ID is the mechanism that lets you identify a type during the execution of a program.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Reflection enables you to obtain information about a type.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Globalization;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        string s = &amp;quot;A string&amp;quot;;&lt;br /&gt;
        Type t = s.GetType();&lt;br /&gt;
        Console.WriteLine(t.Name);              &lt;br /&gt;
        Console.WriteLine(t.Namespace);         &lt;br /&gt;
        Console.WriteLine(t.IsPublic);          &lt;br /&gt;
        Console.WriteLine(t == typeof(string)); &lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;String&lt;br /&gt;
System&lt;br /&gt;
True&lt;br /&gt;
True&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>