2016-09-22 95 views
0

我是ASP.NET MVC的新手,甚至更新的扩展方法。调用扩展方法到新类

我有一个扩展方法我写

public static string ExtensionMethod(this Extension extype) 
    { 
     switch (extype) 
     { 
      case Extension.ONE: 
       return "Object one string"; 

      case Extension.TWO: 
       return "Object two string "; 

      case Extension.THREE: 
       return "Object three string"; 

      default: 
       return "Any other string"; 
     } 
    } 

所以基本上这样做是比较已在视图而做出的,更改标签,以配合他们选择什么样的选择。十分简单。
现在他们希望他们的收件人能够反映确切的字符串。所以我有一个班级负责管理我的电子邮件,但我无法弄清楚如何把价值放在课堂上。

在我看来

我打电话

@Model.ViewModelReference.Extension(); 

这使它的伟大的,但我不知道如何引用一个扩展类在另一个类

email.To = receiptInfo.EmailAddress; 
email.From = "email address"; 
email.Subject = "Reciept"; 
      var bodyFormat = new StringBuilder(); 
      bodyFormat.AppendLine("*RECEIPT*\t"); 
      bodyFormat.AppendLine("I want Object string to show up here"); 

编辑

谢谢。我实现了像这样

bodyFormat.AppendLine(MyNameSpace.MyExtension.Extension()); 

,但我得到的参数错误,我不是100%肯定,我应该把它其中的参数,或者甚至需要一个。如果我不添加()它抛出一个不能转换为字符串错误。通过我放入extype的逻辑,但它也不喜欢这种说,它在目前的情况下并不存在。

回答

0

您只需包含扩展方法所在的类,并且扩展方法将可用。

在你的类,管理电子邮件地址:

using MyNameSpace.MyExtension; 

然后使用它,只是有Extension类型的东西,并呼吁ExtensionMethod()关闭它。因此,它看起来是这样的:

using MyNameSpace.MyExtension; 

var myExtension = new Extension(); 
myExtension.ExtensionMethod() 

你不能简单地调用MyNameSpace.MyExtension.Extension(),你需要的MyExtension的实例,这就是为什么在我的例子,我有myExtension变量。

+0

谢谢。我实现它像这样bodyFormat.AppendLine(MyNameSpace.MyExtension.Extension());但是我收到了一个参数错误,我不能100%确定我应该放哪个参数,或者它甚至需要一个参数。如果我不添加()它抛出一个不能转换为字符串错误。 – BlowFish

+0

我已经更新了我的答案,以显示如何调用扩展方法 –

+0

这令人惊讶,非常感谢您的教训。对此,我真的非常感激。我所有的教育都是前端,因此学习MVC和所有后端编码已经相当大脑伸展^。^ – BlowFish