我的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
}
}
}
我可以动态选择相关的Imageservice类吗? imageClassName变量包含Image服务类名。
factory.imageClassName.DeleteImage(name, id);
有没有办法使用字符串变量来替换类名?
答案 0 :(得分:0)
您的类(CategoryImage
,ItemImage
等)是继承自单个接口还是抽象类?
在这种情况下,您可以使用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);