根据变量值动态选择服务类

本文关键字:服务 选择 动态 变量值 | 更新日期: 2023-09-27 18:34:37

我的 MVC 解决方案中有多个项目。在我的Web项目中,ImageController为我项目中的所有Image类提供了更新,删除和创建方法。目前,我正在使用切换选项从服务层(另一个类库项目(访问相关服务。

namespace MySolution.Web.Controllers
{
    public class ImageController : Controller
    {
      public void UpdateMainImage( string imageClassName, string name, long id)
      {
          using (ServiceFactory factory = new ServiceFactory())
            {
                switch (imageClassName)
                {
                    case "CategoryImage": factory.CategoryImage.UpdateDisplayImage(name, id);
                        break;
                    case "ItemImage": factory.ItemImage..UpdateDisplayImage(name, id));
                        break;
                  //other case statements                                                   
                }
      }
// Delete Image Method
public void DeleteImage( string imageClassName, long id)
      {
          using (ServiceFactory factory = new ServiceFactory())
            {
                switch (imageClassName)
                {
                    case "CategoryImage": factory.CategoryImage.DeleteImage( id);
                        break;
                    case "ItemImage": factory.ItemImage..DeleteImage(id));
                        break;
                  //other case statements                                                   
                }
      }
    }

是否可以动态选择相关的影像服务类?变量包含影像服务类名。

factory.imageClassName.DeleteImage(name, id);

有没有办法使用字符串变量来替换类名?

根据变量值动态选择服务类

你的类(CategoryImageItemImage等(是从单个接口还是抽象类继承而来的?

在这种情况下,您可以使用Dictionary<string, ImageService,其中ImageService是基类或接口。

private static IDictionary<string, ImageService> imageServices = new Dictionary<string, ImageService>
{
    { "CreateImage", new CreateImage() },
    { "ItemImage", new ItemImage() },
};
// somewhere below:
imageServices[imageClassName].UpdateDisplayImage(name, id);