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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top