Assembly를 통해 DLL 동적 로드
2861 단어 assembly
Assembly DLL
// DLL
static Assembly amy = Assembly.LoadFrom("Student.dll");
//
static Type type = amy.GetType("Student.Stu");
private void button1_Click(object sender, EventArgs e)
{
//
string strDyNamic= (string)type.InvokeMember("GetNewValue",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.Static |
BindingFlags.InvokeMethod, null, null,
new object[] {"Static"});
MessageBox.Show(strDyNamic);
//
object obj = type.InvokeMember(null,BindingFlags.DeclaredOnly|
BindingFlags.Public|BindingFlags.NonPublic|
BindingFlags.Instance|BindingFlags.CreateInstance,
null,null,null);
string strStatic = (string)type.InvokeMember("GetValue",
BindingFlags.DeclaredOnly|
BindingFlags.Public|BindingFlags.NonPublic|
BindingFlags.Instance|BindingFlags.InvokeMethod,
null,obj,new object[]{"NonStatic"});
MessageBox.Show(strStatic);
//
type.InvokeMember("Name",BindingFlags.DeclaredOnly|
BindingFlags.Public |BindingFlags.NonPublic|
BindingFlags.Instance|BindingFlags.SetProperty,
null,obj,new object[]{"Test"});
//
string property = (string)type.InvokeMember("Name",BindingFlags.DeclaredOnly|
BindingFlags.Public|BindingFlags.NonPublic|
BindingFlags.Instance|BindingFlags.GetProperty,
null,obj,null);
MessageBox.Show(property);
}
DLL 코드는 대체로 다음과 같습니다.
namespace Student
{
public class Stu
{
public Stu()
{
strName = "";
}
public string GetValue(string strText)
{
return string.Format("Print NonStatic {0}!", strText);
}
public static string GetNewValue(string strText)
{
return string.Format("Print static {0}!", strText);
}
private string strName;
public string Name
{
get { return strName; }
set { strName = value; }
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Make 및 MakeFiles. 저게 뭐야?많은 사람들이 인기 있는 저장소에서 이 파일을 보았지만 기억하지 못할 수도 있습니다. 예를 들어 C 프로그램은 개체 파일(.o 확장자)이라는 중간 파일로 컴파일할 수 있으며, 그런 다음 이를 결합하여 실행 파일을 생...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.