C# 从另一个团队实现接口
我从另一个团队收到了一个api和一些代码片段。我不知道如何让测试正常工作。前两个片段是提供给我的。最后一个是我尝试实现接口并使其工作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
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);
}
}