2010-05-28 81 views
1

我是一名移动网站开发人员,并试图通过移动广告服务通过我的流量获利,并且我遇到了问题。C#某种插件系统

首先,为了让您的广告获得最大收益,您通常需要向服务器端请求广告公司的服务器,并且广告服务的数量非常少。当你想在一个站点使用它们时,问题就会开始。

所有服务器端调用都有不同的方法,尝试维护和实现这些广告代码在一段时间后会变得很痛苦。

所以我决定写一个类系统,我可以简单地为每个公司创建方法并上传到我的网站。

到目前为止,我已经 公共广告类 与返回具有服务的名称作为枚举我使用所有的广告服务

我也已经转换服务器请求代码的广告 公共Adservice类GetAd出现方法public AdPublisher类上课。

它工作正常,但我希望能够创建一个广告服务类上传它,以便asp.net应用程序可以像插件系统一样自动导入/识别它。

因为我是.net的新手,我不知道从哪里开始或如何去做。

为了使事情清楚这里有我的课

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

基本上我希望能够添加其它广告服务,这样的代码

private string AdmobAds(string publisherid){ 
} 

因此,它可以导入并确认为广告服务。

我希望我是很清晰

回答

5

THS似乎是一个非常模糊的/一般性的问题,并考虑你提到你没有太熟悉.NET,我想我会为你指明的方向Managed Extensibility Framework。这是为创建插件/插件系统而设计的官方Micrsoft库(它就像专门的Inversion of Control框架)。请注意,在.NET 4.0中,它实际上是框架基类库的一部分。在Add-ins and Extensibility上也有一个很好的MSDN页面 - 与System.AddIn命名空间有关 - 您可能也会发现它很有帮助。

0

您可以动态加载程序集,然后查询类的列表并检查类是否从您的接口派生。检查“装配”类。