Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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#_Oop_Interface - Fatal编程技术网

C# 如何传递接口使其成为类对象并在另一个项目中使用其方法

C# 如何传递接口使其成为类对象并在另一个项目中使用其方法,c#,oop,interface,C#,Oop,Interface,我有以下情况: 我有一个项目“记录器” 它有一个名为“Log”的具体类 这个“日志”是从接口“Ilog”继承的,接口“Ilog”是从拥有所有接口的项目“Common”引用的 所以现在的解决方案看起来像 主溶液 -记录器(类库) -Log.cs 公共(类库) ILog(接口) ICache(接口) 缓存(类库) Cache.cs(该类由ICache从公共项目继承 现在cache.cs还需要使用日志记录,我不想使用logger项目的引用,只需要使用公共项目引用并实现日志记录 请给出一些解

我有以下情况:

我有一个项目“记录器” 它有一个名为“Log”的具体类 这个“日志”是从接口“Ilog”继承的,接口“Ilog”是从拥有所有接口的项目“Common”引用的

所以现在的解决方案看起来像

主溶液 -记录器(类库) -Log.cs

  • 公共(类库)

    • ILog(接口)
    • ICache(接口)
  • 缓存(类库)

    • Cache.cs(该类由ICache从公共项目继承
现在cache.cs还需要使用日志记录,我不想使用logger项目的引用,只需要使用公共项目引用并实现日志记录

请给出一些解决方法。

“我不想使用包含代码的项目,但我确实想使用它”,这是一个考虑不周的想法

只需使用它或在缓存类库中重新实现ILog。

我不想使用包含代码的项目,但我确实想使用它”是一个考虑不周的想法


只需使用它或在缓存类库中重新实现ILog。

您可以使用IOC来解决此问题。通过使用IOC,您只引用
缓存
库中的
公共
类库;但调用
日志
类上的方法

您所需要做的就是创建一个容器;通过使用配置文件或编码将接口映射到对象;通过IOC解析对象


您可以参考Unity IOC的和。

您可以使用IOC来解决此问题。通过使用IOC,您只能参考
缓存
库中的
公共
类库;但可以调用
日志
类中的方法

您所需要做的就是创建一个容器;通过使用配置文件或编码将接口映射到对象;通过IOC解析对象


您可以参考Unity IOC的和。

您好,谢谢您的回答,但我应该在哪个项目中使用Unity框架?@rusty您应该在入口点注册类的接口。然后使用IOC容器解析所有其他对象。乍看起来可能没有意义;但如果您只参考它提供给您的链接,则可能会有意义你好,我试过你说的,但我的具体类在不同的项目(缓存)中,接口在不同的项目(公共)中。我将在我的应用程序中添加公共项目dll。如何在我的缓存应用程序中使用具体类。您需要将这两个dll添加到应用程序中;但在缓存项目中,仅引用公共项目,而不引用日志项目。例如,应用程序引用所有三个dll;缓存引用公共和日志引用也e common dll。缓存只知道日志dll的接口。在应用程序中创建一个unity容器,并将日志接口映射到日志类。然后使用容器解析缓存dll。您好,谢谢您的回答,但我应该在哪个项目中使用unity framework?@rusty您应该在e入口点。然后使用ioc容器解析所有其他对象。乍一看,这可能没有意义;但如果你只是参考链接,它可能会让你更好地理解。嗨,我尝试了你所说的,但我的具体类在不同的项目(缓存)中,接口在不同的项目(公共)中。我将在我的应用程序中添加公共项目dll。如何在我的缓存应用程序中使用具体类。您需要将这两个dll添加到应用程序中;但在缓存项目中,仅引用公共项目,而不引用日志项目。例如,应用程序引用所有三个dll;缓存引用公共和日志引用也e common dll。缓存只知道日志dll的接口。在应用程序中创建一个unity容器,并将日志接口映射到日志类。然后使用该容器解析缓存dll。虽然您可能实现了所需的功能,但我仍然认为这些类可以根据其使用者进行更好的设计../尽管您可能会实现您需要的功能,但我仍然认为这些类可以根据其消费者进行更好的设计/