Come si istanzia un oggetto che non è incluso nel tuo progetto C#?
-
31-10-2019 - |
Domanda
Nota: tutto il codice di esempio è notevolmente semplificato.
Ho una DLL definita come:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web;
namespace RIV.Module
{
public interface IModule
{
StringWriter ProcessRequest(HttpContext context);
string Decrypt(string interactive);
string ExecutePlayerAction(object ParamObjectFromFlash);
void LogEvent(object LoggingObjectFromFlash);
}
}
Ora, al di fuori della mia soluzione, altri sviluppatori possono definire le classi di cemento e lasciarle cadere nella cartella del cestino della mia app. Forse qualcosa di simile:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RIV.Module;
namespace RIV.Module.Greeting
{
public class Module : IModule
{
public System.IO.StringWriter ProcessRequest(System.Web.HttpContext context)
{
//...
}
public string Decrypt(string interactive)
{
//...
}
public string ExecutePlayerAction(object ParamObjectFromFlash)
{
//...
}
public void LogEvent(object LoggingObjectFromFlash)
{
//...
}
}
}
Ora, nella mia app avrei bisogno di sapere che era disponibile un nuovo modulo (immagino tramite web.config o qualcosa del genere) e poi essere in grado di chiamarlo in base a alcuni trigger nella tabella della campagna di database (che mappe al modulo da utilizzare per quella specifica campagna).
Sto cercando di istanziarlo in questo modo:
var type = typeof(RIV.Module.Greeting.Module);
var obj = (RIV.Module.Greeting.Module)Activator.CreateInstance(type);
Tuttavia, il compilatore erutta perché un riferimento non è mai stato impostato su Riv.module.greeting.dll!
Che cosa sto facendo di sbagliato?
Nessuna soluzione corretta