C#根据类名操作类

dxiuquan 2009-04-10 10:43:28
能否实现这样一种要求:定义一个方法,传入参数为类名(string),在方法内对该类进行操作?
...全文
231 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxiuquan 2009-04-10
  • 打赏
  • 举报
回复
谢谢各位,我按照反射的思路测试一下。
yo_yokel 2009-04-10
  • 打赏
  • 举报
回复
第一种方法是标识要在程序集内查找的特定对象,并向程序集请求该对象的模块(记住模块是类型和代码的逻辑分组,如 .dll 或 .exe)。

object b=new object();
System.Reflection.Assembly a;

//通过Module.Assembly使模块执行反射操作
a= (b.GetType()).Module.Assembly;

第二种方法是使用 Assembly 类的 LoadFrom 方法,为指定模块(如 myapp.exe)加载特定程序集。

System.Reflection.Assembly a;
a=System. Reflection.Assembly.LoadFrom("MyLibrary.dll");

标识了程序集后,现在可以继续检索类型,将 GetTypes 方法的返回值分配给 Type 对象的数组。现在便可以操作这些类型了。
windsea123 2009-04-10
  • 打赏
  • 举报
回复
string signature = "System.DateTime AddDays(Double)";
object c = Activator.CreateInstance(typeof(DateTime));
MethodInfo mi = c.GetType().GetMethods().SingleOrDefault(x=>x.ToString() == signature);
DateTime dt = DateTime.Now;
if(mi != null)
dt =DateTime.Parse(mi.Invoke(dt,new object[]{5}).ToString());
dxiuquan 2009-04-10
  • 打赏
  • 举报
回复
楼上的没有看明白,4楼的思路似乎不错,能否再详细点,写个简单的方法
wuyi8808 2009-04-10
  • 打赏
  • 举报
回复
using System;
using System.Reflection;

class MyClass
{
int myInt;
string myString;

public MyClass(){}

public MyClass(int i)
{
myInt = i;
}

public MyClass(string s)
{
myString = s;
}
}

class ListMembers
{
public static void Main()
{
Type t = typeof(MyClass);
Console.WriteLine ("下面列出{0}类的全部公有构造函数", t);
ConstructorInfo[] ci = t.GetConstructors(BindingFlags.Public | BindingFlags.Instance);
PrintMembers (ci);
}
public static void PrintMembers(MemberInfo [] ms)
{
foreach (MemberInfo m in ms)
{
Console.WriteLine ("{0}{1}", " ", m);
}
Console.WriteLine();
}
}
whyabc 2009-04-10
  • 打赏
  • 举报
回复
楼上的代码很对
mykelly6 2009-04-10
  • 打赏
  • 举报
回复
lz说的应该是反射吧?
Animal animal = (Animal)Assembly.Load("AnimalSystem").CreateInstance("AnimalSystem.Cat");

http://kb.cnblogs.com/page/42254/
wartim 2009-04-10
  • 打赏
  • 举报
回复
反射
wuyi8808 2009-04-10
  • 打赏
  • 举报
回复
反射。
dxiuquan 2009-04-10
  • 打赏
  • 举报
回复
沉得好快,顶上来

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧