Страница: 1 | 
		
		 
			   
			 
			 Есть описание класса в файлике, файликов много, и где лежат - непонятно.. Необходимо во время работы проги считывать описание класса и создавать объект этого класса. Пробовала использовать CreateObject, но вылазит ошибка "невозможно создать ActiveX компонент".  Помогите плиз...  
			 
			 Dim А как должна "строка имя моего типа" выглядеть? Если у меня сборка с именем "MyAssambly", пространство имен в ней "SampleNS", а имя класса "Sample". Если брать строку "SampleNS.Sample", то тип MyType оказывается nothing... ЗЫ: а может я просто совсем я совсем тупая, а?... Не работает... Все равно MyType = Nothing, а дальше соответственно ошибка "Value cannot be null" Файл сборки MyAssambly: Imports Microsoft.VisualBasic.Interaction Namespace SampleNS     Public Class Sample         Public Sub PrintMe(ByVal strin As String)             MsgBox(strin,1)         End Sub     End Class End Namespace Код программы: Public Class Form1     Inherits System.Windows.Forms.Form     Private Sub Button1_Click(ByVal sender As System.Object, _                      ByVal e As System.EventArgs) Handles Button2.Click         Dim strin As Object         strin = "MyAssambly.SampleNS.Sample"         Dim MyType As Type = Type.GetType(strin)         Dim obnew As Object = Activator.CreateInstance(MyType)         obnew.PrintMe("Hello")     End Sub End Class ЗЫ: да, замечательно вся структуризации пропала... Надеюсь понятно? ЗЗЫ опс, строку с кнопкой в одном месте исправить забыла, там      Private Sub Button2_Click(ByVal sender As System.Object, _            ByVal e As System.EventArgs) Handles Button2.Click Плохо, что в форуме нет возможности редактировать свои же сообщения Так все работает. Имя solution - Sample, далее по коду... Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyType As Type = Type.GetType("Sample.test.mytest") Dim Obj As Object = Activator.CreateInstance(MyType) Obj.printstr("!!!") End Sub End Class Namespace test Public Class mytest Public Sub PrintStr(ByVal str As String) MsgBox(str) End Sub Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Как создать объект в VB.Net?
     
    
Добавлено: 10.02.04 18:16
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 Unica
      
       
  
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 13
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
  Артём Л.
![]()
![]()
ICQ: 280044491 
Вопросов: 43
Ответов: 227
      
 Профиль |  | #1
       
Добавлено:  10.02.04 18:35
       
    
       
  
может reflection поюзать? 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 Павло
![]()
![]()
![]()
Вопросов: 8
Ответов: 24
      
 Профиль |  | #2
       
Добавлено:  10.02.04 19:52
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 Павло
![]()
![]()
![]()
Вопросов: 8
Ответов: 24
      
 Профиль |  | #3
       
Добавлено:  10.02.04 19:54
       
    
       
  
P.S. Правда, это работает если объект входит в сборку. Иначе, имхо более сложную конструкцию через Reflection юзать надо.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 Unica
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 2
Ответов: 6
      
 Профиль |  | #4
       
Добавлено:  10.02.04 21:01
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
  Артём Л.
![]()
![]()
ICQ: 280044491 
Вопросов: 43
Ответов: 227
      
 Профиль |  | #5
       
Добавлено:  10.02.04 21:12
       
    
       
  
нужно брать: 
    
MyAssambly.SampleNS.Sample
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 Unica
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 2
Ответов: 6
      
 Профиль |  | #6
       
Добавлено:  10.02.04 21:21
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
  Артём Л.
![]()
![]()
ICQ: 280044491 
Вопросов: 43
Ответов: 227
      
 Профиль |  | #7
       
Добавлено:  10.02.04 21:31
       
    
       
  
покажите полный код 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 Unica
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 2
Ответов: 6
      
 Профиль |  | #8
       
Добавлено:  10.02.04 21:36
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа:
 Unica
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 2
Ответов: 6
      
 Профиль |  | #9
       
Добавлено:  10.02.04 21:38
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа:
 Unica
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 2
Ответов: 6
      
 Профиль |  | #10
       
Добавлено:  10.02.04 21:43
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа:
 Павло
![]()
![]()
![]()
Вопросов: 8
Ответов: 24
      
 Профиль |  | #11
       
Добавлено:  10.02.04 22:22
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 12 
      
Автор ответа:
 Павло
![]()
![]()
![]()
Вопросов: 8
Ответов: 24
      
 Профиль |  | #12
       
Добавлено:  10.02.04 22:24
       
    
       
  
End Class - там лишний и End Name Space не скопировался....
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа:
 Павел
![]()
![]()
![]()
![]()
![]()
![]()
Администратор
ICQ: 326066673 
Вопросов: 368
Ответов: 5968
      
 Web-сайт:  
 Профиль |  | #13
      
Добавлено:  11.02.04 11:28
       
    
       
  
Попробуйте средставми Reflection. Сначала загружать библиотеку с 
    
помощью System.Reflection.Assembly.LoadFrom (или Load), а потом
создавать экземпляр класса.
Только необходимо обязательно значть, где сборка лежит, в .NET иначе
никак.