0
다른 네임 스페이스의 사용자 정의 클래스를 사용하는 런타임에 코드를 생성하려고합니다.런타임에 사용자 정의 클래스 추가, 참조 없음
Here's 내 코드 :
namespace Test.Programm.Network
{
class Handler
{
public void CreateAssembly()
{
string[] code =
{
@"using System;
using System.Collections;
namespace Test.Programm.Network
{
class HandleMessage
{
protected static internal Queue _queue;
public static void Received(string message)
{
lock (_queue)
{
_queue.Enqueue(message);
}
}
public HandleMessage()
{
_queue = new Queue();
}
}
}"
};
CompilerParameters parms = new CompilerParameters();
parms.GenerateExecutable = false;
parms.GenerateInMemory = true;
CodeDomProvider compiler = null;
compiler = CodeDomProvider.CreateProvider("CSharp");
CompilerResults compilerResults = compiler.CompileAssemblyFromSource(parms, code);
var cls = compilerResults.CompiledAssembly.GetType("Test.Programm.Network.HandleMessage");
Assembly assembly = compilerResults.CompiledAssembly;
var newHandler = assembly.CreateInstance(compilerResults.CompiledAssembly.GetType("Test.Programm.Network.HandleMessage").ToString());
}
}
}
하지만 난 내 함수에 문자열을 전달하고자하지는, 그 기능에 대한 자신의 유형을 전달하려는.
지금 내가 그런 간단한 메시지 클래스가 :namespace Test.Programm.Messages
{
public class Message<T>
{
string _message;
}
}
나도 내가 생성 할 코드, 미안 점점 오류에 사용 Test.Programm.Messages를 추가하려면이 네임 스페이스 아무튼 그 존재하지 않아 참조가 누락되었습니다 ...
parms.ReferencedAssemblies.Add ("Grid.Node.Messages"); 코드 생성,하지만이 나던 작동하지 않습니다. 웹 검색은 아직 답변이 없습니다.-
도움 주셔서 감사합니다.
신 damm ^^ 모든 것을 시도했지만 단순한 영혼은 아닙니다. 너의 형제 – gangfish