C#如何在方法中获得方法名?
比如,在运行时要在方法Myfun()中得到这个方法的名称,有没有什么一般的通用方法?我要的是在运行时获得,即动态获得,而不是在编程时直接输入!我知道我的这个问题有点古怪。...
比如,在运行时要在方法Myfun()中得到这个方法的名称,有没有什么一般的通用方法?我要的是在运行时获得,即动态获得,而不是在编程时直接输入!
我知道我的这个问题有点古怪。是这样的,在.net编写网页中,允许用<%代码%>的方式在源文件中嵌入C#代码,但是嵌入的代码应该是属于哪个函数呢?
也许都认为那些嵌入的代码属于哪个函数并不用去关心,但是我对这个问题很感兴趣。所以我就想找一个通用的能"在方法中获取方法名" 的办法。... 展开
我知道我的这个问题有点古怪。是这样的,在.net编写网页中,允许用<%代码%>的方式在源文件中嵌入C#代码,但是嵌入的代码应该是属于哪个函数呢?
也许都认为那些嵌入的代码属于哪个函数并不用去关心,但是我对这个问题很感兴趣。所以我就想找一个通用的能"在方法中获取方法名" 的办法。... 展开
展开全部
利用默认成员特性可以动态的获取此方法名
下面是一个示例:
using System;
using System.Reflection;
namespace Cshcn
{
public class Program
{
static void Main()
{
TestClass t=new TestClass();
string methodName=t.GetMethod();//调用成员GetMethod,并返回成员名
if(methodName!=null)
Console.WriteLine(methodName);
}
}
[DefaultMemberAttribute("GetMethod")] //特性:绑定类型的默认成员
public class TestClass
{
public string GetMethod()
{
Type t=typeof(TestClass);
MemberInfo[] mi=t.GetDefaultMembers();
if(mi.Length>0)
{
foreach(MemberInfo m in mi)
{
Console.WriteLine("Return owner name...");
return m.Name; //返回方法名
}
}
return null;
}
}
}
"在运行时要在方法Myfun()中得到这个方法的名称,有没有什么一般的通用方法?"
利用反射技术和自定义特性就可以动态获取并实现。反射可以查询类型的成员,特性可以
对成员进行标注。有点儿复杂的示例就不写了!
无论你怎么写,对该方法不做绑定标记,恐怕不行!
"在方法中获取方法名"
有点儿让人费解,不知道你碰到了什么问题!
方法名在程序的什么地方都可以获取!只要你想....
不知道,这是不是你想要的答案。
下面是一个示例:
using System;
using System.Reflection;
namespace Cshcn
{
public class Program
{
static void Main()
{
TestClass t=new TestClass();
string methodName=t.GetMethod();//调用成员GetMethod,并返回成员名
if(methodName!=null)
Console.WriteLine(methodName);
}
}
[DefaultMemberAttribute("GetMethod")] //特性:绑定类型的默认成员
public class TestClass
{
public string GetMethod()
{
Type t=typeof(TestClass);
MemberInfo[] mi=t.GetDefaultMembers();
if(mi.Length>0)
{
foreach(MemberInfo m in mi)
{
Console.WriteLine("Return owner name...");
return m.Name; //返回方法名
}
}
return null;
}
}
}
"在运行时要在方法Myfun()中得到这个方法的名称,有没有什么一般的通用方法?"
利用反射技术和自定义特性就可以动态获取并实现。反射可以查询类型的成员,特性可以
对成员进行标注。有点儿复杂的示例就不写了!
无论你怎么写,对该方法不做绑定标记,恐怕不行!
"在方法中获取方法名"
有点儿让人费解,不知道你碰到了什么问题!
方法名在程序的什么地方都可以获取!只要你想....
不知道,这是不是你想要的答案。
展开全部
public string demo()
{
return "demo";
}
Assembly ab = Assembly.GetExecutingAssembly();//得到当前运行的程序集
Type tp = ab.GetType("Test.Process");//得到指定的类,
MethodInfo mi = tp.GetMethod("demo");//得到方法“demo()”函数的信息
object ob = Activator.CreateInstance(tp);//对得到的tp实例化对象
调用ob对象的mi中的方法,null:没有参数;有参数:需要传入一个object数组
object res = mi.Invoke(ob,null);//
messagebox.show(res).
{
return "demo";
}
Assembly ab = Assembly.GetExecutingAssembly();//得到当前运行的程序集
Type tp = ab.GetType("Test.Process");//得到指定的类,
MethodInfo mi = tp.GetMethod("demo");//得到方法“demo()”函数的信息
object ob = Activator.CreateInstance(tp);//对得到的tp实例化对象
调用ob对象的mi中的方法,null:没有参数;有参数:需要传入一个object数组
object res = mi.Invoke(ob,null);//
messagebox.show(res).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要使用这种方法,就不能是直接调用的方法,
比如
class MyClass{
void Run();
}
MyClass mc = new MyClass();
mc.Run();//这样应该不能动态获得,
除非
Type t = typeof(MyClass);
MethodInfo run = t.GetMethod("Run");
run.Invoke(new MyClass(),null);
使用这样的方法,执行Run函数.
MethodInfo中有个Name属性,可以获得当前执行方法的名称.
比如
class MyClass{
void Run();
}
MyClass mc = new MyClass();
mc.Run();//这样应该不能动态获得,
除非
Type t = typeof(MyClass);
MethodInfo run = t.GetMethod("Run");
run.Invoke(new MyClass(),null);
使用这样的方法,执行Run函数.
MethodInfo中有个Name属性,可以获得当前执行方法的名称.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
知道楼主的意思
没有那个你所谓的通用的方法
只能这么写
Myfun()
{
textbox1.text="Myfun";
}
没有那个你所谓的通用的方法
只能这么写
Myfun()
{
textbox1.text="Myfun";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个功能功能比较奇怪,就好像文这样一样问题:"我怎么能知道我自己的名字,不许直接用我自己的最说"。哈哈
你还是说说你程序的功能和你的设计思路吧。我们看看是不是有更好的实现方法。
你还是说说你程序的功能和你的设计思路吧。我们看看是不是有更好的实现方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询