2010-03-18 4 views
0
public sealed class SurrogateSelector : System.Runtime.Serialization.SurrogateSelector, System.Runtime.Serialization.ISurrogateSelector 
{ 
    System.Runtime.Serialization.ISerializationSurrogate ISS = System.Runtime.Serialization.FormatterServices.GetSurrogateForCyclicalReference(new SerializationSurrogate()); 
    public SurrogateSelector() 
    { 
     foreach (Type t in typeof(NameSpace.ASampleClass).Assembly.GetTypes()) 
     { 
      if (t.Namespace == "NameSpace") 
       this.AddSurrogate(t, new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All), ISS); 
     } 
    } 
} 

{System.Reflection.ReflectionTypeLoadException : 하나 또는 요청 유형의 이상을로드 할 수 없습니다. 더 LoaderExceptions 속성을 정보로 가져 오십시오. 프로젝트 \ \ Esfand \ Esfand \ 클래스 이름 : D에 NameSpace.SurrogateSelector..ctor에서 System.Reflection.Assembly.GetTypes에서 System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)() () 에서. cs : line 2661}TypeLoadException은 어떻게 발생합니까?

+0

"NameSpace"가 동일한 모듈에 있습니다 (프로 시저가 해당 네임 스페이스에 있음) – Behrooz

+0

예외 메시지가 무엇입니까? InnerException이 있습니까? – itowlson

+0

전체 코드를 표시하려면 도움이 될 것입니다. – Andrey

답변

0

모든 externs가 올바르게 정의되었는지 확인하십시오. CLR은 정의한 외부 메서드에 대한 구현을 찾을 수없는 경우 형식을로드 할 수 없습니다. 이 같은 방법을 정의하는 경우 예를 들어

,

public static extern IntPtr SendMessage(IntPtr w, uint m, IntPtr p1, IntPtr p2); 

당신이 그것을에 [DllImport("user32.dll")]를 사용해야합니다. 각 TypeLoadException은 메소드가 발견되지 않은 메소드를 알려야합니다.

관련 문제