【问题标题】:Calling Extension Method to new Class向新类调用扩展方法
【发布时间】:2016-09-22 20:45:58
【问题描述】:

我是 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 但它也不喜欢那样,说它在当前上下文中不存在。

【问题讨论】:

    标签: asp.net-mvc extension-methods


    【解决方案1】:

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

    在管理电子邮件的类中添加:

    using MyNameSpace.MyExtension;
    

    然后要使用它,只需拥有Extension 类型的东西并调用ExtensionMethod() 关闭它。所以它看起来像:

    using MyNameSpace.MyExtension;
    
    var myExtension = new Extension();
    myExtension.ExtensionMethod()
    

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

    【讨论】:

    • 谢谢。我像这样实现了 bodyFormat.AppendLine(MyNameSpace.MyExtension.Extension());但我遇到了一个参数错误,我不能 100% 确定我应该输入哪个参数,或者它甚至需要一个参数。如果我不添加 () 它会抛出无法转换为字符串的错误。
    • 我已经更新了我的答案以显示如何调用扩展方法
    • 这非常有效,感谢您的课程。对此,我真的非常感激。我所有的教育都是前端,所以学习 MVC 和所有后端编码都相当费脑筋^.^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2012-02-09
    相关资源
    最近更新 更多