C#某种插件系统

nLL*_*nLL 1 c# plugins

我是一名移动网络开发者,并尝试通过移动广告服务从我的流量中获利,但我遇到了问题.

首先,为了获得大部分广告,您通常需要向广告公司的服务器提出服务器端请求,而且广告服务很少.如果要在一个站点中使用它们,问题就会开始.

所有人都有不同的服务器端呼叫方法,并且尝试维护和实施这些广告代码会在一段时间后变得很痛苦.

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

到目前为止,我有使用GetAd方法的公共广告类公共AdPublisher类,它返回一个广告公共Adservice类,其服务名称为枚举

我还将我用于所有广告服务的服务器请求代码转换为类.

它工作正常,但我希望能够创建一个广告服务类上传它,以便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"
}
}
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够添加其他广告服务和代码

private string AdmobAds(string publisherid){
}
Run Code Online (Sandbox Code Playgroud)

这样它就可以导入并识别为广告服务.

我希望我很清楚

Nol*_*rin 5

这似乎是一个非常模糊/一般的问题,考虑到你提到你不熟悉.NET,我想我会指出你在Managed Extensibility Framework的方向.这是一个官方的Micrsoft库,用于创建插件/插件系统(它就像一个专门的控制反转框架).请注意,在.NET 4.0中,它实际上是框架基类库的一部分.在加载项和扩展性方面还有一个很棒的MSDN页面- 与System.AddIn命名空间相关 - 您可能会发现它非常有用.