c#反射和特性

本文介绍了C#编程中的反射和条件预处理指令的应用。通过示例展示了如何获取类型信息、调用方法以及使用DEBUG和TRACE标志来控制代码流程。示例包括了获取类型和方法的反射,以及DEBUG和TRACE定义对代码的影响。
摘要由CSDN通过智能技术生成

1、关于类型的反射示例


static void Main(string[] args)
{
	string s = "hello";
	Type t1 = s.GetType();
	Console.WriteLine(t1.FullName);
	Type t2 = Type.GetType("System.String", false, true);
	Console.WriteLine(t2.FullName);
	Type t3 = typeof(string);
	Console.WriteLine(t3.FullName);
	
	Console.ReadLine();
}

2、关于方法的反射示例

static void Main(string[] args)
{
    string s = "hello";
    Type t1 = s.GetType();
    Console.WriteLine(t1.FullName);
    Type t2 = Type.GetType("System.String", false, true);
    Console.WriteLine(t2.FullName);
    Type t3 = typeof(string);
    Console.WriteLine(t3.FullName);

    Console.WriteLine("*********************************************");
    //GetMethods(t1);
    Console.WriteLine("Copy method: {0}", t1.GetMethod("Copy"));
    GetMethods(t1, BindingFlags.Public & BindingFlags.Instance);
    //GetFields(), GetProperties();

    Console.ReadLine();
}

public static void GetMethods(Type t, BindingFlags flags)
{
    MethodInfo[] methodInfos = t.GetMethods(flags);
    foreach (MethodInfo method in methodInfos)
    {
        Console.WriteLine(method.Name);
    }
}

3、条件预处理指令

//#define DEBUG
//#undef DEBUG
#define TRACE
using System;
using System.Diagnostics;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
#if (DEBUG)
            {
                Console.WriteLine("Debugging is enabled");
            }
#elif(TRACE)
            {
                Console.WriteLine("Tracing is enabled");
            }
#else
            {
                Console.WriteLine("Release is enabled");
            }
#endif
            Console.WriteLine("hello");
            Console.ReadLine();
        }
    }
}
#define DEBUG

using System;
using System.Diagnostics;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
#if DEBUG
#line 200 "Special"
#error DEBUG is defined
#endif

#line default
#warning I am not happy

            Console.ReadLine();
        }
    }
}
#define DEBUG

using System;
using System.Diagnostics;
using System.Reflection;

namespace ConsoleApp1
{
#pragma warning disable 414, 3021

    [CLSCompliant(false)]
    class Program
    {
        static void Main(string[] args)
        {
#pragma checksum "filename" "{guid}" ""
            Console.ReadLine();
        }
    }

#pragma warning restore 3021
    [CLSCompliant(false)]
    public class D
    {
        int i = 1;
        public static void M()
        {
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值