Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从另一个团队实现接口_C#_Asp.net_Interface - Fatal编程技术网

C# 从另一个团队实现接口

C# 从另一个团队实现接口,c#,asp.net,interface,C#,Asp.net,Interface,我从另一个团队收到了一个api和一些代码片段。我不知道如何让测试正常工作。前两个片段是提供给我的。最后一个是我尝试实现接口并使其工作 using com.XXXX.api; class ApiTest { static void Main(string[] args) { MicrositesApiFactory factory = MicrositesApiFactory.getInstance(); Logger logger = factor

我从另一个团队收到了一个api和一些代码片段。我不知道如何让测试正常工作。前两个片段是提供给我的。最后一个是我尝试实现接口并使其工作

using com.XXXX.api;
class ApiTest
{
    static void Main(string[] args)
    {
        MicrositesApiFactory factory = MicrositesApiFactory.getInstance();
        Logger logger = factory.getLogger("ApiTest", typeof(Program));
        logger.error("created logger");

    /*  
    if (logger.isTraceEnabled)
    {
        logger.trace("acquired logger successfully");
    }
    */
        DatabaseMgr databaseMgr = factory.getDatabaseMgr("microsites");
    if (databaseMgr == null)
    {
        //logger.alert("unable to retrieve DatabaseMgr object");
    }
    else
    {
        DbConnection conn = databaseMgr.getDbConnection(DatabaseSchema.ApplicationSchema);
    }
    Console.In.ReadLine();
}
无论出于何种原因,他们在方法之后加入了{…}。我不知道我在这里需要做什么。 他们提供的接口:

namespace com.XXXX.api
{
    public class MicrositesApiFactory
    {
       public static MicrositesApiFactory getInstance() {...}
       public Logger getLogger(String msId, Type type) {...}
       public DatabaseMgr getDatabaseMgr(String msId) {...}
    }
    public abstract class Logger
    {
       public String MicrositeId { get; set; }
       public abstract void alert(String message);
    }
    public enum DatabaseSchema
    {
       ApplicationSchema,
       ConsumerSchema,
       ContentSchema
    }
    public abstract class DatabaseMgr
    {
       public String MicrositeId { get; set; }
       protected DatabaseMgr(String micrositeId) { ... }
       public abstract DbConnection
       getDbConnection(DatabaseSchema schema);
    }
}
以下是我对界面的修改,以使其正常工作。 我不知道最好的方法是什么。 根据我对接口的理解,我需要实现所有的方法。 欢迎提供关于接口实现的任何建议

此错误是唯一仍然存在的错误:

DatabaseMgr不包含接受0个参数的构造函数


在这里进行猜测,但您的问题可能是这一行:
DatabaseMgr test=new MicrositesApiFactory()参数的数量可能需要相同。一种修复方法是为
DatabaseMgr
创建一个无参数构造函数。如果我完全错了,我将删除此评论。:)为什么
Logger
扩展
DatabaseMgr
?您应该实现
DatabaseMgr
Logger
等吗?还是它们已经存在?@davideverett protected DatabaseMgr(){…}看起来您主要与Java开发人员合作……几乎所有Java api的名称空间都以“com.something.somethingelse”开头,通常在C中,您不编写
getXXX
方法,此外,C#建议对方法名使用适当的大小写,而不是像Java那样使用驼峰大小写。
using System;
using System.Data.Common;
using System.Data.SqlClient;

namespace com.tsystems_mms.phi.microsites.api
{

    public class MicrositesApiFactory : Logger
    {

        public override DbConnection getDbConnection(DatabaseSchema message)
        {
            DbConnection test = new SqlConnection();
            return test;
        }


        public DatabaseMgr getDatabaseMgr(String msId)
        {
            DatabaseMgr test = new MicrositesApiFactory();
            return test;
        }

        public static MicrositesApiFactory getInstance() {
            return new MicrositesApiFactory();
        }

        public override void alert(string message) { }

        public override bool isErrorEnabled
        {
            get { throw new NotImplementedException(); }
        }

        public Logger getLogger(String msId, Type type)
        {
            Logger test = new MicrositesApiFactory();
            return test;
        }

    }
    public abstract class Logger : DatabaseMgr
    {
        public new String MicrositeId { get; set; }
        public abstract void alert(String message);
        public abstract bool isErrorEnabled { get; }
    }
    public enum DatabaseSchema
    {
        ApplicationSchema,
        ConsumerSchema,
        ContentSchema
    }
    public abstract class DatabaseMgr
    {
        public String MicrositeId { get; set; }

        protected DatabaseMgr(String micrositeId)
        {
        }

        public abstract DbConnection getDbConnection(DatabaseSchema schema);
    }
}