抽象工厂错误CS0246 C#.NET



我有一个有效的项目,其中包括诸如计算,串行端口等的单独类别,并希望将它们封装到dll中,以便在其他类似项目中使用。我正在尝试实施工厂,首先是用于串行端口工厂的工厂,因此我可以在多个DLL之间使用。这是我的第一次,并且已经阅读了大量教程,并且已经从这个示例开始:

https://www.codeproject.com/articles/1075518/learning-factory-pattern-using-csharp

哪个运作良好,但是我想将Filelogger移出其自己的班级,所以我已经尝试了一段时间,但是需要朝正确的方向推动吗?

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'(您是否缺少使用指令或汇编引用?)

我只是无法让它参考文件。FileLogger,请帮助?

已解决,一旦我删除了:

interface ILogger
{
    void Log(string Message);
}

从程序类中结束了,现在它有效,因为我有两个接口

最新更新