2010-05-28 3 views
1

Je suis un développeur web mobile et j'essaie de monétiser mon trafic avec des services d'annonces mobiles et j'ai un problème. Tout d'abord, pour tirer le meilleur parti de vos annonces, vous devez généralement effectuer une requête côté serveur sur les serveurs de la société publicitaire et il existe peu de services publicitaires. Le problème commence quand vous voulez les utiliser dans un site. Tous ont des approches différentes pour les appels côté serveur et essayer de maintenir et de mettre en œuvre ces codes devient douloureux au bout d'un certain temps.C# une sorte de système de plugin

J'ai donc décidé d'écrire un système de classe où je peux simplement créer des méthodes pour chaque entreprise et les télécharger sur mon site.

Jusqu'à présent, j'ai public class annonce classe Adpublisher publique avec la méthode GetAd qui renvoie une annonce classe Adservice public qui a des noms de services ENUM

I ont également converti les codes de demande de serveur de tous les services de publicité i utilise aux classes.

Cela fonctionne bien, mais je veux être en mesure de créer une classe de service de publicité le télécharger afin que l'application asp.net peut importer/reconnaître automatiquement comme un système de plugin.

Comme je suis nouveau à .net je n'ai aucune idée par où commencer ou comment le faire.

Pour rendre les choses clairement ici sont mes cours

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" 
} 
} 

Fondamentalement, je veux être en mesure d'ajouter un autre service d'annonces et le code comme

private string AdmobAds(string publisherid){ 
} 

Alors qu'il peut être importé et reconnu comme ad un service.

J'espère que je suis assez clair

Répondre

5

Thessaloniciens semble une question assez vague/général, et étant donné que vous avez mentionné que vous n'êtes pas trop familier avec .NET, je pensais que je vous diriger dans la direction de la Managed Extensibility Framework. Ceci est une bibliothèque officielle de Micrsoft conçue pour créer des systèmes plugin/add-in (c'est comme un framework spécialisé Inversion of Control). Notez que dans .NET 4.0, il fait partie de la bibliothèque de classes de base de l'infrastructure. Il y a aussi une bonne page MSDN sur Add-ins and Extensibility - relative à l'espace de noms System.AddIn - que vous pouvez trouver très utile aussi.

0

Vous pouvez charger des assemblys de façon dynamique, puis interroger la liste des classes et vérifier si la classe est dérivée de votre interface. Vérifiez la classe "Assembly".

Questions connexes