Mit meiner .NET Applikation möchte ich auf eine private Funktion einer anderen, bereits kompilierten .NET Komponente zugreifen. Ist das möglich?
Dieser Beitrag wurde von Legacy bearbeitet: 22. Mai 2005 - 17:08
geschrieben 19. Mai 2005 - 20:28
Dieser Beitrag wurde von Legacy bearbeitet: 22. Mai 2005 - 17:08
geschrieben 19. Mai 2005 - 20:45
geschrieben 19. Mai 2005 - 20:51
geschrieben 20. Mai 2005 - 12:20
//Der Namespace System.Reflection wurde eingebunden! //Assembly laden Assembly l_Assembly = Assembly.LoadFrom(@"..\..\..\ClassLibrary6\bin\Debug\ClassLibrary6.dll"); //Die Klasse, auf die zugegriffen werden soll, ermitteln Type l_Type = l_Assembly.GetType("ClassLibrary6.Class1"); //Instanz der Klasse erstellen object l_Instance = Activator.CreateInstance(l_Type); //MethodInfo-Objekt für die gewünschte Funktion erstellen //und Funktion in der KlassenInstanz über Invoke aufrufen MethodInfo l_MethodInfo = l_Type.GetMethod("ShowMessage", BindingFlags.Instance | BindingFlags.NonPublic); l_MethodInfo.Invoke(l_Instance, new object[]{"Hello Reflection World!"});
geschrieben 20. Mai 2005 - 15:54
geschrieben 20. Mai 2005 - 17:57
//Privaten Constructor ermitteln ConstructorInfo l_ConstructorInfo = l_Type.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[0], null); object l_Instance = l_ConstructorInfo.Invoke(new object[0]); //Methode aufrufen MethodInfo l_MethodInfo = l_Type.GetMethod("ShowMessage2", BindingFlags.Instance | BindingFlags.NonPublic); l_MethodInfo.Invoke(l_Instance, new object[]{"Hello Reflection World 2!"});
Dieser Beitrag wurde von constructor bearbeitet: 20. Mai 2005 - 18:04
geschrieben 22. Mai 2005 - 17:07
Dieser Beitrag wurde von Legacy bearbeitet: 22. Mai 2005 - 17:40
geschrieben 24. Mai 2005 - 09:41
Zitat (Legacy: 22.05.2005, 18:07)
private static Type FindType() { Assembly l_Assembly = Assembly.LoadFrom(@"c:\MeineKomponente.dll"); Type l_AddInInfoType = null; foreach(Type type in l_Assembly.GetTypes()) { //Überprüfen, ob der Type das Interface implementiert TypeFilter myFilter = new TypeFilter(InterfaceFilter); String[] myInterfaceList = new String[1] {"Namespace.IMeinInterface"}; Type[] myInterfaces = type.FindInterfaces(myFilter, myInterfaceList[0]); if (myInterfaces.Length == 1) { l_AddInInfoType = type; break; } } return l_AddInInfoType; } private static bool InterfaceFilter(Type typeObj, Object criteriaObj) { if(typeObj.ToString() == criteriaObj.ToString()) { return true; } else { return false; } }