Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# 在ASP.NET MVC控制器之间共享代码_C#_Asp.net Mvc - Fatal编程技术网

C# 在ASP.NET MVC控制器之间共享代码

C# 在ASP.NET MVC控制器之间共享代码,c#,asp.net-mvc,C#,Asp.net Mvc,我有几个控制器在这里工作,其中包含我可以在其他控制器中使用的方法 我考虑将一些常见的功能转移到一个基本控制器上,然后这些控制器就可以从中继承。问题是我在多个基本控件中需要一些方法,而这些方法是我无法访问的。(因为我们不能从多个基本控制器继承) 我的另一个想法是将通用功能移到它们自己的类中,在Controller文件夹之外 你会怎么做?在ASP.NET MVC中有没有一种很好的方式来共享我还不知道的代码?我会考虑加入一个助手类之类的东西。从您所描述的内容来看,该功能有助于控制器/关于面向对象编程,

我有几个控制器在这里工作,其中包含我可以在其他控制器中使用的方法

我考虑将一些常见的功能转移到一个基本控制器上,然后这些控制器就可以从中继承。问题是我在多个基本控件中需要一些方法,而这些方法是我无法访问的。(因为我们不能从多个基本控制器继承)

我的另一个想法是将通用功能移到它们自己的类中,在Controller文件夹之外


你会怎么做?在ASP.NET MVC中有没有一种很好的方式来共享我还不知道的代码?

我会考虑加入一个助手类之类的东西。从您所描述的内容来看,该功能有助于控制器/

关于面向对象编程,有一条经验法则,您应该支持组合而不是继承,它非常适合这种情况

我将创建一个或多个封装有问题的方法的服务,然后从控制器中使用这些服务


对于额外的要点,请从相关服务中提取接口,并将接口注入控制器,以最大程度地分离关注点。

选择似乎是基本控制器或帮助器类。您可以控制控制器的创建,并将助手注入任何需要它的控制器。

我有一个稍微不同的场景。我有几个Web应用程序,它们的登录控制器具有完全相同的代码。这些应用程序的登录系统之间的差异仅限于它们的
web.config
文件。我希望在一个单独的项目中有一个共享的登录控制器类,它将被我的Web应用程序引用。可能吗?是的。我总是在单独的库中编写所有控制器的代码。我保存在应用程序入口点中的视图。您可能想看看这里:我的问题是我不想拥有10多个相同的
Login.cshtml
\u Layout.cshtml
文件副本。