抽象工厂错误CS0246 C#.NET
我有一个独立类的工作项目,比如calcs、串口等。。并希望将它们封装到dll中,以便在其他类似项目中使用。我正在尝试实现一个工厂,首先是一个串口工厂,这样我就可以在多个DLL之间使用。这是我第一次阅读大量教程,并从以下示例开始: 虽然它工作得很好,但我想将FileLogger移到它自己的类中,所以我已经尝试了一段时间,但需要朝正确的方向轻推吗抽象工厂错误CS0246 C#.NET,c#,design-patterns,factory,cs0246,C#,Design Patterns,Factory,Cs0246,我有一个独立类的工作项目,比如calcs、串口等。。并希望将它们封装到dll中,以便在其他类似项目中使用。我正在尝试实现一个工厂,首先是一个串口工厂,这样我就可以在多个DLL之间使用。这是我第一次阅读大量教程,并从以下示例开始: 虽然它工作得很好,但我想将FileLogger移到它自己的类中,所以我已经尝试了一段时间,但需要朝正确的方向轻推吗 using System; using System.Collections.Generic; using System.Linq; using Sys
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactoryPatternSample
{
interface ILogger
{
void Log(string Message);
}
enum LoggerType
{
File,
Database,
EventViewer
}
public class File
{
public class FileLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in File.", Message);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactoryPatternSample
{
class Program
{
File.FileLogger flogger = new File.FileLogger();
interface ILogger
{
void Log(string Message);
}
enum LoggerType
{
File,
Database,
EventViewer
}
class DatabaseLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in Database.", Message);
}
}
class EventViewerLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in EventViewer.", Message);
}
}
class LoggerFactory
{
public static ILogger Get(LoggerType type)
{
switch (type)
{
case LoggerType.Database:
return new DatabaseLogger();
case LoggerType.EventViewer:
return new EventViewerLogger();
case LoggerType.File:
default:
return new flogger();
}
}
}
static void Main(string[] args)
{
ILogger logger1 = LoggerFactory.Get(LoggerType.Database);
logger1.Log("Message from Main");
ILogger logger2 = LoggerFactory.Get(LoggerType.File);
logger2.Log("Message from Main");
ILogger logger3 = LoggerFactory.Get(LoggerType.EventViewer);
logger3.Log("Message from Main");
Console.ReadKey();
/*Output
Message from Main - Logged in Database.
Message from Main - Logged in File.
Message from Main - Logged in EventViewer.
*/
}
}
}
此位是导致问题的原因:
return new flogger();
这就是错误:
错误CS0246找不到类型或命名空间名称“flogger”(是否缺少using指令或程序集引用?)
我只是无法将其转到reference File.FileLogger,请帮助?解决,一旦我删除:
interface ILogger
{
void Log(string Message);
}
从program类开始,结束了,现在开始工作,因为我有两个接口,它是
new File.FileLogger()
,正如您在初始化字段的行中所做的:File.FileLogger flogger=new File.FileLogger()
是要返回FileLogger
的新实例,还是要在flogger
变量中返回现有实例?正如蒂姆·施梅尔特(Tim Schmelter)所说,要么return flogger
或返回新文件.FileLogger()代码>使用“return flogger”表示感谢;我收到错误CS0120非静态字段、方法或属性“Program.flogger”或使用return new“File.FileLogger();”表示需要对象引用出现错误CS0266,无法将类型“FactoryPatternSample.File.FileLogger”隐式转换为“FactoryPatternSample.Program.ILogger”。存在显式转换(是否缺少强制转换?)