2014-10-22 142 views
-1

我有一个叫“类”文件夹,该文件夹中我有一个类叫做ConverImages.csC#访问方法从控制器

在这个文件是下面的代码:

namespace VehicleAudits2_v1.classes 
{ 
    public class ConvertImage 
    { 
     public Image base64ToImage(string base64String) 
     { 
      // Convert Base64 String to byte[] 
      byte[] imageBytes = Convert.FromBase64String(base64String); 
      MemoryStream ms = new MemoryStream(imageBytes, 0, 
      imageBytes.Length); 

      // Convert byte[] to Image 
      ms.Write(imageBytes, 0, imageBytes.Length); 
      Image image = Image.FromStream(ms, true); 
      return image; 

     } 
    } 
} 

我会怎样从控制器调用这个?如果此代码是我控制我只是会直接调用它像这样:

base64ToImage(ImageString); 

,但我无法弄清楚如何从外部文件调用,并在互联网上搜索并没有拿出任何东西

+5

你可能会得到更好的服务于拿起一本书C#和面向对象编程一般 – 2014-10-22 11:05:35

回答

1

你必须包括命名空间在你的控制器类并调用该方法是这样的:

using VehicleAudits2_v1.classes; 

public class SomeController : Controller 
{ 

    public ActionResult SomeAction() 
    { 
    ConvertImage convert = new ConvertImage(); 
    convert.base64ToImage("SomeValue"); 
    return View(); 

    } 

} 
-3

让你的方法static

public static Image base64ToImage(string base64String) 

然后使用<class_name>.<method_name>是指它在你的控制器:

ConvertImage.base64ToImage(ImageString); 
+1

我不不明白为什么你这个人(你和@Rik)建议让这个方法变成静态的? – 2014-10-22 11:10:02

+0

@SriramSakthivel:请教育我,并解释为什么你认为'静态'是一个坏主意? AFAIK,'base64ToImage'方法采用随机输入来处理和生成输出,并且不依赖于其父类的任何成员,因此是静态方法(Helper类设计模式)的完美候选。 – SNag 2014-10-22 11:24:10

+0

如果你向谷歌提出同样的问题,你会得到很多答案。我的两分钱[这里](http://simpleprogrammer.com/2010/01/29/static-methods-will-shock-you/)和[帮手类也应该避免](http://simpleprogrammer.com/2010/04/12 /应-I-离开 - 即辅助类/)。 – 2014-10-22 11:26:38