编辑:在现实生活中,我没有书本类。这只是一个清楚的例子。真正的问题确实需要反思才能解决。
假设我有一些类:
书,苹果,门。
class Book
{
...
public decimal getPrice()
{...}
public string getTitle()
{...}
public decimal getAuthor()
{...}
}其他班级也一样。
可以从字符串动态调用类方法:
Book myBook = new Book("Title", "Author", 44);
string title = runMethod(myBook, "getTitle");发布于 2009-12-31 19:17:43
您可以使用这样的东西,使用反射:
class Program
{
static void Main(string[] args)
{
var b = new Book("Book Title", 2342);
Console.WriteLine(CallMethod(b, "GetTitle", "Not Found"));
}
public static K CallMethod<T,K>(T a, string method, K defaultOjb)
{
var t = a.GetType();
var mi = t.GetMethod(method);
if (mi == null) return defaultOjb;
var ret=mi.Invoke(a, new object[] {});
return (K) ret;
}
}
public class Book
{
private readonly string _title;
private readonly decimal _price;
public decimal GetPrice()
{
return _price;
}
public string GetTitle()
{
return _title;
}
public Book(string title, decimal price)
{
_title = title;
_price = price;
}
}发布于 2009-12-31 19:03:46
你可以通过反射来完成这个任务。
Book myBook = new Book("Title", "Author", 44);
string title = (string) myBook.GetType().GetMethod("getTitle").Invoke(myBook, null); 发布于 2009-12-31 19:03:15
查找反射和MethodInfo。我相信这会引导你走上你正在寻找的道路。
https://stackoverflow.com/questions/1986672
复制相似问题