我正在寻找asp.net/c#中的这两个函数的替代品。
if(function_exists('foo'))
{
$returned = foo($bar);
}
if(class_exists('foo'))
{
$fooclass = new foo($bar);
}
答案 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: