AppDomain
및 해당 AssemblyResolve
이벤트를 클래스 안에 래핑하여 어셈블리 확인 프로세스를 사용자 지정하려고합니다. 내 ClassLoader
의 단순화 된 버전은 아래와 같습니다. 내가 가지고있는 문제는 이벤트 AssemblyResolve
이 해고 될 때 이전에 만든 하나가 아닌 ClassLoader
의 새 인스턴스를 얻는 것 같습니다. 생성 된 AppDomain의 AssemblyResolve 이벤트 관련 문제
[Serializable]
public class ClassLoader // : IDisposable
{
public AppDomain Domain { get; private set; }
public string FooProperty { get; set; }
public ClassLoader(string domain) {
Domain = AppDomain.CreateDomain(domain);
Domain.AssemblyResolve += Domain_AssemblyResolve;
}
private Assembly Domain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Console.WriteLine(
"ClassLoader HashCode: {0} FooProperty: {1}\n\n",
GetHashCode(),
FooProperty);
// ...
return null;
}
// ...
}
이 코드를 실행
는 FooProperty는 Domain_AssemblyResolve 이벤트 핸들러에서 초기화되지 않고 ClassLoader 인스턴스는 "C"는 상이한 해시 코드를 갖는다.var c = new ClassLoader("demo");
c.FooProperty = "Foo";
Console.WriteLine(
"c Hash Code: {0} FooProperty: {1}",
c.GetHashCode(),
c.FooProperty);
c.Domain.CreateInstanceAndUnwrap("Not important", "Not important");
어떤 일이 일어나고 있습니까? 또는 몇 가지 해결 방법?
감사합니다.