将扩展方法调用到新类

时间:2016-09-22 20:45:59

标签: asp.net-mvc extension-methods

我是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";
        }
    }

所以基本上它的作用是比较在视图中进行的选择并更改标签以匹配他们选择的内容。容易Peasy 现在他们希望他们的收据反映出那个确切的字符串。所以我有一个管理我的电子邮件的课程,但我无法弄清楚如何将价值放在课堂上。

在我看来,我打电话给

@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但它也不喜欢它,说它在当前环境中不存在。

1 个答案:

答案 0 :(得分:0)

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

在您管理电子邮件的课程中添加:

using MyNameSpace.MyExtension;

然后要使用它,只需要Extension类型的内容并从中调用ExtensionMethod()。所以它看起来像:

using MyNameSpace.MyExtension;

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

您不能简单地致电MyNameSpace.MyExtension.Extension(),您需要MyExtension的实例,这就是为什么在我的示例中我有myExtension变量。