也许使用动态模式?您可以使用dynamic关键字调用任何方法/属性,对吗?例如,在调用myDynamicObject.DoStuff()之前,如何检查该方法是否存在?
发布于 2011-02-25 14:59:35
你可以这样写:
public static bool HasMethod(this object objectToCheck, string methodName)
{
var type = objectToCheck.GetType();
return type.GetMethod(methodName) != null;
}
Edit :你甚至可以做一个扩展方法,并像这样使用它
myObject.HasMethod("SomeMethod");
发布于 2011-02-25 14:57:40
通过反射
var property = object.GetType().GetProperty("YourProperty")
property.SetValue(object,some_value,null);
类似的是for方法
发布于 2014-07-04 07:55:32
这是一个古老的问题,但我只是碰巧遇到了它。如果有多个方法具有该名称,则Type.GetMethod(string name)
将抛出AmbiguousMatchException,因此我们最好处理这种情况
public static bool HasMethod(this object objectToCheck, string methodName)
{
try
{
var type = objectToCheck.GetType();
return type.GetMethod(methodName) != null;
}
catch(AmbiguousMatchException)
{
// ambiguous means there is more than one result,
// which means: a method with that name does exist
return true;
}
}
https://stackoverflow.com/questions/5114469
复制相似问题