나는이 두 함수의 대안을 asp.net/c#에서 찾고 있습니다.PHP function_exists/class_exists C#에서 해당 항목
if(function_exists('foo'))
{
$returned = foo($bar);
}
if(class_exists('foo'))
{
$fooclass = new foo($bar);
}
나는이 두 함수의 대안을 asp.net/c#에서 찾고 있습니다.PHP function_exists/class_exists C#에서 해당 항목
if(function_exists('foo'))
{
$returned = foo($bar);
}
if(class_exists('foo'))
{
$fooclass = new foo($bar);
}
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;
@David Lively, thanks –
이 코드는 컴파일 할 필요없이 런타임에서 확인하는 데 사용할 수 있습니다. 내가 맞습니까? –
@PeachLabs, 런타임에 사용할 수 있습니다. 컴파일하기 전에 각 코드를 컴파일해야하는지 알지 못했습니다. –
이러한 함수는 C#이 정적 언어이므로 관련이 없습니다.
클래스가 존재하지 않으면 컴파일 시간이 오류가 발생합니다.
리플렉션을 찾고있을 수 있습니다.
저는 최상의 솔루션을 얻으려는 WordPress와 같은 플러그인 프레임 워크를 개발하려고합니다. –
이런 종류의 것은 해석되고 동적으로 유형화 된 세계에서 크게 컴파일되고 강력한 형식의 .NET 세계로 변환되지 않습니다. 즉, 거기에 도달 할 수있는 다른 방법이 있습니다. 아마도 어떤 효과를 창출하려고하는지 질문을 다시 말하고 싶을 것입니다.
C#의 모든 함수는 클래스 내에 있어야하므로 첫 번째 예제는 전역 함수의 컨텍스트에서는 적용되지 않습니다. 존재하는 경우 클래스의 경우를 들어
, 당신은 컴파일 시간에 알 수 :MyClass
가 정의되지 않은 경우
MyClass x = new MyClass();
컴파일시에 반환됩니다. 당신이 MyClass에에 속하는 방법의 목록을 얻고 싶다면
, 당신은 Reflection 사용할 수 있습니다
을 당신이 뭘 하려는지? – SLaks