Учитывая, что вы можете:
var type = Type.GetType("Namespace1.ClassA");
object instance = Activator.CreateInstance(type);
Если вы затем хотите вызывать методы для этого экземпляра, вам нужно либо привести его к общему интерфейсу, либо получить экземпляр MethodInfo
для вызова.Если вы контролируете генерацию классов, я бы рекомендовал интерфейсный подход:
public interface IClassA
{
void AMethod();
}
namespace Namespace1
{
public class ClassA : IClassA
{ /* Stuff... */ }
}
Таким образом, вам нужно только:
var type = Type.GetType("Namespace1.ClassA");
IClassA instance = (IClassA)Activator.CreateInstance(type);
instance.AMethod();
Большинство автоматически сгенерированных классов используют такие инструменты, как Linq-to-Sql, Entity Framework и даже прокси-серверы WCF создаются как partial
, что означает, что вы можете создать дополнительный файл, например ClassA.partial.cs
, и добавлять больше в объявления классов, не изменяя автоматически сгенерированный класс:
partial class ClassA : IClassA { }