Se si desidera creare un tipo in modo dinamico in fase di esecuzione, Activator.CreateInstance Method lo farà per voi. Se il problema è con il tipo che ha un costruttore con parametri, questo sovraccarico lo farà. Ad esempio, http://msdn.microsoft.com/en-us/library/wcxyzt4d.aspx
Si consiglia di cercare tra i sovraccarichi per la migliore corrispondenza.
Il problema dello spazio dei nomi non deve essere rilavante, a condizione che la dll si trovi nella directory bin o nel GAC dovresti essere OK. Le regole possono cambiare se l'assembly è Fortemente chiamato però.
Potrebbe fornire un snippiet di codice del codice che non funziona (utilizzando il metodo a cui è collegato)? Questo + gli errori che stai vedendo saranno molto utili! [aggiornamento] Esempio rapido che utilizza Activator.CreateInstance che gestisce i costruttori con i parametri.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
BaseProduct b =(BaseProduct)System.Activator.CreateInstance(Type.GetType("ConsoleApplication1.Product")
,new object[]{typeof(string)},
new object[]{"123"}
);
//Activator..::.CreateInstance Method (Type, array<Object>[]()[], array<Object>[]()[])
}
}
public class Product: BaseProduct{
public Product(string id) {
}
public string Id {get;set;}
}
public abstract class BaseProduct {
abstract public string Id { get; set; }
}
}
fonte
2009-03-15 17:20:05
Type.GetType() non sembra trovare il tipo con la stringa fornita. La classe Prop è definita nello spazio dei nomi Reaver.GamePlay, ma il tipo restituito è null. –
Ho anche provato "Reaver.GamePlay.Prop, Reaver.GamePlay" senza alcun risultato. –
@ Ben: in che assemblaggio si trova? L'assembly è fortemente digitato? –