PHP函数中的PHP function_exists / class_exists等效

时间:2010-12-17 17:17:38

标签: c# php asp.net

我正在寻找asp.net/c#中的这两个函数的替代品。

if(function_exists('foo'))
{
    $returned = foo($bar);
}
if(class_exists('foo'))
{
    $fooclass = new foo($bar);
}

4 个答案:

答案 0 :(得分:3)

Assembly assembly = Assembly.LoadFile("assemblyAddress");

bool containClass = assembly.GetTypes().Where(x=>x.Name == "ClassName").Count() > 0;

bool containmethod = assembly.GetTypes().Where(
    x => x.GetMethods().Count(p => p.Name == "MethodName") > 0).Count() > 0;

答案 1 :(得分:2)

这些功能无关紧要,因为C#是一种静态语言 如果该类不存在,您将收到编译时错误。

你可能正在寻找反思。

答案 2 :(得分:0)

这种事情并没有从解释和动态类型的世界转换为.NET的大量编译和强类型世界。也就是说,还有其他方法可以达到目的,也许你可能想重述一下你想要创造什么效果的问题。

答案 3 :(得分:0)

C#中的所有函数都必须存在于类中,因此第一个示例不适用于全局函数的上下文。

对于类的情况,您将在编译时知道它是否存在:

MyClass x = new MyClass();
如果未定义MyClass

将在编译时返回。

如果您想获得属于MyClass的方法列表,可以使用Reflection