tags:

views:

61

answers:

2

Hi, I am a mobile web developer and trying to monetize my traffic with mobile ad services and i have a problem.

First of all to get most of out of your ads you usually need to do server side request to advert company's servers and there are quite few ad services. Problem starts when you want to use them in one site.

All have different approaches to server side calls and trying to maintain and implement those ad codes becomes pain after a while.

So I decided to write a class system where i can simply create methods for every company and upload it to my site.

So far i have public Advert class public AdPublisher class with GetAd method that returns an Advert public Adservice class that has Service names as enum

I also have converted server request codes of all ad services i use to classes.

It works ok but I want to be able to create an ad service class upload it so that asp.net app can import/recognize it automatically like a plugin system.

As I am new to .net I have no idea where to start or how to do it.

To make thing clear here are my classes

namespace Mobile.Publisher
{

public class AdPublisher
{
    public AdPublisher()
    {
        IsTest = false;
    }
    public bool IsTest { get; set; }
    public HttpRequest CurrentVisitorRequestInfo { get; set; }
    public Advert GetAd(AdService service)
    {
        Advert returnAd = new Advert();
        returnAd.Success = true;

        if (this.CurrentVisitorRequestInfo == null)
        {
            throw new Exception("CurrentVisitorRequestInfo for AdPublisher not set!");
        }
        if (service == null)
        {
            throw new Exception("AdService not set!");
        }



        if (service.ServiceName == AdServices.Admob)
        {
            returnAd.ReturnedAd = AdmobAds("000000");
        }



        return returnAd;

    }

}

public enum AdServices
{
    Admob,
    ServiceB,
    ServiceC
}

public class Advert
{
    public bool Success { get; set; }
    public string ReturnedAd { get; set; }
}

 public partial class AdService
{
    public AdServices ServiceName { get; set; }
    public string PublisherOrSiteId { get; set; }
    public string ZoneOrChannelId { get; set; }

}

private string AdmobAds(string publisherid)
{
//snip
 return "test"
}
}

Basically i want to be able to add another ad service and code like

private string AdmobAds(string publisherid){
}

So that it can be imported and recognised as ad service.

I hope i was clear enough

+5  A: 

Ths seems like a pretty vague/general question, and considering you mentioned you're no too familiar with .NET, I thought I'd point you in the direction of the Managed Extensibility Framework. This is an official Micrsoft library designed for creating plugin/add-in systems (it's like a specialised Inversion of Control framework). Note that in .NET 4.0, it's actually part of the framework base class library. There's also a great MSDN page on Add-ins and Extensibility - relating to the System.AddIn namespace - which you may find pretty helpful too.

Noldorin
A: 

You can load assemblies dynamically, then query the list of classes and check whether the class is derived from your interface. Check the "Assembly" class.

Sudesh Sawant