728x90
반응형
728x170
[TestLibrary 프로젝트]
▶ TestClass.cs
using System;
namespace TestLibrary
{
/// <summary>
/// 테스트 클래스
/// </summary>
public class TestClass
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 메시지 쓰기 - WriteMessage(message)
/// <summary>
/// 메시지 쓰기
/// </summary>
/// <param name="message">메시지</param>
public static void WriteMessage(string message)
{
Console.WriteLine("TestClass.WriteMessage : " + message);
}
#endregion
}
}
728x90
[TestProject 프로젝트]
▶ AssemblyLoader.cs
using System;
using System.Reflection;
namespace TestProject
{
/// <summary>
/// 어셈블리 로더
/// </summary>
public class AssemblyLoader : MarshalByRefObject
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 어셈블리
/// </summary>
private Assembly assembly;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 수명 주기 서비스 초기화하기 - InitializeLifetimeService()
/// <summary>
/// 수명 주기 서비스 초기화하기
/// </summary>
/// <returns>수명 주기 서비스 객체</returns>
public override object InitializeLifetimeService()
{
return null;
}
#endregion
#region 어셈블리 로드하기 - LoadAssembly(filePath)
/// <summary>
/// 어셈블리 로드하기
/// </summary>
/// <param name="filePath">파일 경로</param>
public void LoadAssembly(string filePath)
{
this.assembly = Assembly.Load(AssemblyName.GetAssemblyName(filePath));
}
#endregion
#region 정적 메소드 실행하기 - ExecuteStaticMethod(typeName, methodName, parameterArray)
/// <summary>
/// 정적 메소드 실행하기
/// </summary>
/// <param name="typeName">타입명</param>
/// <param name="methodName">메소드명</param>
/// <param name="parameterArray">매개 변수 배열</param>
/// <returns>실행 결과</returns>
public object ExecuteStaticMethod(string typeName, string methodName, params object[] parameterArray)
{
Type type = assembly.GetType(typeName);
MethodInfo method = type.GetMethod(methodName, BindingFlags.Static | BindingFlags.Public);
return method.Invoke(null, parameterArray);
}
#endregion
}
}
300x250
▶ Program.cs
using System;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
AppDomain appDomain = AppDomain.CreateDomain("Test");
AssemblyLoader loader = (AssemblyLoader)appDomain.CreateInstanceAndUnwrap(typeof(AssemblyLoader).Assembly.FullName, typeof(AssemblyLoader).FullName);
loader.LoadAssembly("TestLibrary.dll");
loader.ExecuteStaticMethod("TestLibrary.TestClass", "WriteMessage", DateTime.Now.ToShortDateString());
Console.WriteLine("프로그램을 종료하기 위해 아무 키나 눌러 주시기 바랍니다.");
Console.ReadKey(true);
AppDomain.Unload(appDomain);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 한글 오토마타 사용하기 (0) | 2019.06.28 |
---|---|
[C#/COMMON] Math 클래스 : Round 정적 메소드를 사용해 반올림하기 (0) | 2019.06.25 |
[C#/COMMON] 현재 실행하고 있는 메소드명 구하기 (0) | 2019.06.25 |
[C#/COMMON] 윈도우즈 서비스를 특정 계정으로 시작하기 (0) | 2019.06.20 |
[C#/COMMON] 윈도우즈 서비스 내에서 사용자 계정 변경하기 (0) | 2019.06.20 |
[C#/COMMON] AppDomain 클래스 : 별도 애플리케이션 도메인에서 특정 어셈블리 로드하기 (0) | 2019.06.18 |
[C#/COMMON] AppDomain 클래스 : 애플리케이션 그림자 복사(Shadow Copy) 사용하기 (0) | 2019.06.18 |
[C#/COMMON] SpeechSynthesizer 클래스 : GetInstalledVoices 메소드를 사용해 설치 음성 목록 구하기 (0) | 2019.06.11 |
[C#/COMMON] UNIX 타임 스탬프 구하기 (0) | 2019.06.09 |
[C#/COMMON] WIN32 API를 사용해 최상위 윈도우 여부 구하기 (0) | 2019.06.06 |
[C#/COMMON] Process 클래스 : 윈도우즈 서비스 실행하기 (0) | 2019.06.06 |
댓글을 달아 주세요