2010-12-17 3 views

답변

2
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; 
+0

@David Lively, thanks –

+0

이 코드는 컴파일 할 필요없이 런타임에서 확인하는 데 사용할 수 있습니다. 내가 맞습니까? –

+0

@PeachLabs, 런타임에 사용할 수 있습니다. 컴파일하기 전에 각 코드를 컴파일해야하는지 알지 못했습니다. –

2

이러한 함수는 C#이 정적 언어이므로 관련이 없습니다.
클래스가 존재하지 않으면 컴파일 시간이 오류가 발생합니다.

리플렉션을 찾고있을 수 있습니다.

+0

저는 최상의 솔루션을 얻으려는 WordPress와 같은 플러그인 프레임 워크를 개발하려고합니다. –

0

이런 종류의 것은 해석되고 동적으로 유형화 된 세계에서 크게 컴파일되고 강력한 형식의 .NET 세계로 변환되지 않습니다. 즉, 거기에 도달 할 수있는 다른 방법이 있습니다. 아마도 어떤 효과를 창출하려고하는지 질문을 다시 말하고 싶을 것입니다.

0

C#의 모든 함수는 클래스 내에 있어야하므로 첫 번째 예제는 전역 함수의 컨텍스트에서는 적용되지 않습니다. 존재하는 경우 클래스의 경우를 들어

, 당신은 컴파일 시간에 알 수 : MyClass가 정의되지 않은 경우

MyClass x = new MyClass(); 

컴파일시에 반환됩니다. 당신이 MyClass에에 속하는 방법의 목록을 얻고 싶다면

, 당신은 Reflection 사용할 수 있습니다