⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample26.cs

📁 C#函数手册
💻 CS
字号:
namespace apiBook
{
	using System;
	using System.Reflection;	
	using System.Text;
	using System.Security;
	public class TestTypeClass
	{
		public static void Main()
		{
			//使用InvokeMember方法调用静态方法
			Type t = typeof (TestClass);
			Console.WriteLine("使用InvokeMember方法访问静态方法:");
			Object obj=t.InvokeMember ("HelloWorld", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, null, new object [] {});
			Console.WriteLine(obj);
			//使用InvokeMember方法调用方法
			TestClass c = new TestClass ();
			Console.WriteLine("使用InvokeMember方法调用类的方法:");
			object [] args = new object [] {2, 3};			
			obj=c.GetType().InvokeMember ("TestMethod",BindingFlags.Instance| BindingFlags.Public | BindingFlags.InvokeMethod, null, c, args);
			Console.WriteLine(args[0]+"+"+args[1]+"="+obj);
			//使用InvokeMember方法访问属性
			Console.WriteLine("使用InvokeMember方法访问类的公有属性:");
			obj=t.InvokeMember ("testField", BindingFlags.Instance|BindingFlags.Public | BindingFlags.GetField, null, c, new object [] {});
			Console.WriteLine("testField="+obj);
			Type iTestPIfcType = typeof(ITestPIfc);
			Type iTestCIfcType = typeof(ITestCIfc);
			TestPClass testP = new TestPClass();
			TestPClass[] testPArray = new TestPClass[5];
			Type testP5=testPArray.GetType();
			Type testPType = testP.GetType();
			TestPClass testC = new TestCClass();
			TestPClass[] testCArray = new TestCClass[8];
			Type testC8=testCArray.GetType();
			TestPClass[] testCArray3 = new TestCClass[3];
			TestPClass[,] testCArray33 = new TestCClass[3,3];
			Type testC3=testCArray3.GetType();
			Type testC33=testCArray33.GetType();
			Type testCType = testC.GetType();
			Console.WriteLine("接口ITestCIfc是否是从接口ITestPIfc派生的?"+iTestCIfcType.IsSubclassOf(iTestPIfcType));
			////使用IsSubclassOf方法判断类间的派生关系
			Console.WriteLine("testCType类是否是类testPType的派生类? "+ testCType.IsSubclassOf(testPType));
			Console.WriteLine("testPType类是否是自己的派生类?"+testPType.IsSubclassOf(testPType));
			Console.WriteLine(" TestPClass[5]对象是否可以从 TestCClass[8]对象取得分配?"+testP5.IsAssignableFrom(testC8));
			//使用IsAssignableFrom方法判断对象是否可以互相分配
			Console.WriteLine("TestPClass[5]对象是否可以从 TestCClass[3]对象取得分配?"+testP5.IsAssignableFrom(testC3));
			Console.WriteLine("TestCClass[3]对象是否可以从 TestPClass[5]对象取得分配?"+testC3.IsAssignableFrom(testP5));
			Console.WriteLine("TestCClass[8]对象是否可以从 TestCClass[3]对象取得分配?"+testC8.IsAssignableFrom(testC3));
			Console.WriteLine("TestCClass[3]对象是否可以从 TestCClass[8]对象取得分配?"+testC3.IsAssignableFrom(testC8));
			Console.WriteLine("TestCClass[3][3]对象是否可以从 TestCClass[3]对象取得分配?"+testC33.IsAssignableFrom(testC3));
			Console.WriteLine("TestCClass[3]对象是否可以从 TestCClass[3][3]对象取得分配?"+testC3.IsAssignableFrom(testC33));
			string str="";
			Type strType=str.GetType();
			str=strType.ToString();
			//使用ToString方法获取当前对象类型的字符串表达形式
			Console.WriteLine("strType.ToString()="+str);
			Console.WriteLine("testC3.ToString()="+testC3.ToString());
			Console.WriteLine("TestCClass类的实例是TestPClass类实例?"+testPType.IsInstanceOfType(testC));
			//使用IsInstanceOfType方法判断对象是否是当前类型的实例
			Console.WriteLine("TestPClass类的实例是TestCClass类实例?"+testCType.IsInstanceOfType(testP));

		}
	}
	public class TestClass 
	{
		public static string HelloWorld()
		{
			Console.WriteLine("正在调用HelloWorld方法");
			return "Hello World!";
		}
		public int TestMethod(int a,int b)
		{
			Console.WriteLine("正在调用TestMethod方法");
			return a+b;
		}
		public string testField="测试InvokeMember方法调用公有属性";
	}
	public interface ITestPIfc {}
	public interface ITestCIfc : ITestPIfc {}
	public class TestPClass : ITestPIfc {}
	public class TestCClass : TestPClass {}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -