0
내 MVC 솔루션에 여러 프로젝트가 있습니다. 내 웹 프로젝트의 ImageController에는 프로젝트의 모든 이미지 클래스에 대한 업데이트, 삭제 및 메서드가 있습니다. 현재 서비스 옵션 (다른 클래스 라이브러리 프로젝트)에서 관련 서비스에 액세스하기 위해 스위치 옵션을 사용하고 있습니다.변수 값을 기준으로 동적으로 서비스 클래스를 선택하십시오.
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);
클래스 이름을 바꾸기 위해 문자열 변수를 사용하는 방법이 있습니까?
'반사'는이를 수행 할 수 있지만 느리고 복잡합니다. switch 문을 사용하는 것이 좋습니다. – opewix
@JesseJames 빠른 답장을 보내 주셔서 감사합니다. 네, Reflection을 사용하여 몇 개의 답변과 게시물을 보았습니다. http://stackoverflow.com/questions/1044455/c-sharp-reflection-how-to-get-class-reference-from-string 더 많은 코드를 작성해야하지만 switch 문을 사용하는 것이 더 좋습니다 다른 더 나은 해결책은 없습니다. – user3627847