ASP.NET 컴파일러는 Page 클래스에서 상속받은 새로운 클래스를 만듭니다.
namespace ASP
{
[CompilerGlobalScope]
public class MyPage_aspx : MyPage, IHttpHandler
{
// all methods that resulted from parsing your ASPX page
// Build controls, write literal text, etc
}
}
사용자 프로필의 사용자 APPDATA 폴더 또는 닷넷 프레임 워크 폴더에 하나의 임시 ASP.NET 파일 파일 폴더에서 찾을 수 있습니다 생성됩니다 코드 : 그래서 뭔가를해야합니다 이 중간 CS 파일과 어셈블리를 저장할 위치도 구성 할 수 있습니다.
다음 GetMethod 문서에서 발견 된 발언에 따라 다음에서 BindingFlag
BindingFlags.FlattenHierarchy
를 추가
정적 방법을 찾으려면 (하지만 공용 또는 보호가 될 필요가있다) 페이지에서 계층 구조의 public 및 protected 정적 멤버를 포함 시키려면
BindingFlags.FlattenHierarchy
을 지정하십시오. 상속 된 클래스의 private 정적 멤버는 포함되지 않습니다.
그래서 적어도 BindingFlag를 포함해야합니다. 그 너머에 InvokeMethod 광고 공용 플래그가 있어야 해당 메소드가 반환됩니다.
var MyMethod = this.GetType().
GetMethod(
"Create",
BindingFlags.Static |
BindingFlags.FlattenHierarchy |
BindingFlags.InvokeMethod |
BindingFlags.Public);
이것은 당신의 Create
방법은 실제로 정적 아닌 개인 인스턴스 메소드 가정 않습니다처럼 전체 호출이 보일 것입니다.
Create 메서드는 public이고 static은 실제로 WebMethod이지만 제안한 플래그로 null을 반환합니다. – Sisyphus
GetMethods가 올바른 모든 메서드를 반환하는 것으로 나타나지만 GetMethod가 항상 null을 반환하는 중입니다. 이유는 확실하지 않습니다! – Sisyphus
@Syyphus 당신은 Public과 InvokeMethod 플래그도 필요합니다. 내 업데이트 답변을 참조하십시오. – rene