//获取对应类
Type t = Type.GetType("TestReflection.TestClass");
//Object obj = t.Assembly.CreateInstance("TestReflection.TestClass");
Object obj = Activator.CreateInstance(t);
MethodInfo method_1 = t.GetMethod("Method_1");
method_1.Invoke(obj, null);
MethodInfo method_2 = t.GetMethod("Method_2");
object[] parameters = new object[] { "method_", 2 };
string str = (string)method_2.Invoke(obj, parameters);
Console.WriteLine(str);
Console.ReadLine();
Unity中使用:
using System;
using System.Reflection;
using UnityEngine;
public class Method
public void TestStringToMethod_1()
Debug.Log("method_1");
public void TestStringToMethod_2(string str, GameObject obj)
Debug.Log("Method2 str:" + str);
Debug.Log("Method2 obj:" + obj.name);
public class Reflection : MonoBehaviour
private Type t;
void Start()
//获取对应类
t = Type.GetType("Method");
//创建获取到的类的实例
var obj = t.Assembly.CreateInstance("Method");
MethodInfo method_1 = t.GetMethod("TestStringToMethod_1");
method_1.Invoke(obj, null);
object[] parameters = new object[] { "method2", this.gameObject};
MethodInfo method_2 = t.GetMethod("TestStringToMethod_2");
method_2.Invoke(obj, parameters);
C#反射:String转换成类使用例子:Unity中使用:using System;using System.Reflection;using UnityEngine;public class Method{ public void TestStringToMethod_1() { Debug.Log("method_1"); } public void TestStringToMethod_2(string str, GameO.
类泛型的约束: 代码如下: public static class ToModel where T : class, new() 定义委托: 代码如下:public delegate void SetString(string value); 创建委托方法: 代码如下: private static SetString CreateStringDelegate(T model, string propertyName) { MethodInfo mi = model.GetType().GetProperty(propertyName).GetSetMethod(); Type t
在自己用unity做demo的过程中,想要从配置表中将UI界面的预制体加载到场景中,并且挂载对应的类,由于配置表中需要挂载的类是通过字符串配置的,因此想到了以反射的形式进行添加,做了以下尝试:
public class TestReflection : MonoBehaviour
// Start is called before the first frame updat...
反射给对象赋值遇到的问题——类型转换
发布时间:2012-10-25 10:49浏览次数:225
给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致。
创建对象实例的两种方法:
参考连接 http://blog.csdn.net/wlanye/article/details/7045625
//反射动态创建对象:
//如果A,B,C,D都与执行代码同一个程序集.则可以这样调用
//System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("命名空间.类名", false);
// 如:
//object o = System.Reflection.Assembly.GetExec
近日,用C#写一个系统的Command Engine的原型,需要大量用到C#的反射代码。
其中有一个需求,已知数据的Type和字符串表示的值,据此两个条件生成真正的值,在baidu及google找了将近一个小时的资料,没有找到.不过最后输入我这文章的标题,一下子就在google上找到了,所以,关键字精度是很重要的。
以下为实现代码:
Type myType = Typ
C#中的类型转换
一、类型转换概念 C# 是一门强类型语言,对类型要求比较严格,但是在一定的条件下也是可以相互转换的, 如将 int 型数据转换成 double 型数据。 C# 允许使用两种转换方式:隐式类型转换和显式类型转换。
1、 隐式类型转换 隐式类型转换是 C# 默认的以安全方式进行的转换,不会导致数据丢失。例如,从小的整数 类型转换为大的整数类型,从派生类转换为基类。 隐式转换主要是在整型、浮点型之间的转换,将存储范围小的数据类型直接转换成存储范围 大的数据类型。 示例代码如下: 1 int
今天有群友问我如何用String的文本,转换成对应类名的类学习了下,感觉网络上有,不过表达的不够清晰,或者说我最讨厌那些专业术语连篇的博文!所以自己再总结下using System.Reflection;//反射的引用
namespace ConsoleApp2//命名空间
class TestCase//做实验的类
public void Meth...
string str = "今天是个好天气,我今天被老师批评了一顿,Echo,是个好同学";
Console.WriteLine(str.Contains("Echo")); //是否包含
Console.WriteLine(str.EndsWith("Echo")); //以某个子串结尾
Console.WriteLine(str.StartsWith("今天")); //以某个子串开头
Console.WriteLine(str.IndexOf("个"))
static void Main(string[] args) {
Type type = typeof(ExampleClass);
object obj = Activator.CreateInstance(type);
ExampleClass example = obj as ExampleClass;
if (example != null) {
Console.WriteLine(example.x);
该示例代码中,我们首先获取了类型`ExampleClass`的`Type`对象,然后使用`Activator.CreateInstance`方法创建了一个该类型的新实例。最后,我们将其转换为`ExampleClass`类型,并访问其中的字段。注意,我们使用了`as`操作符来转换,这种方法可以避免`InvalidCastException`异常。