为什么我无法访问.TrimSafe?

时间:2013-08-01 15:11:13

标签: c#

将一些代码从一个控制器复制到另一个控制器。这两个文件都有相同的using语句,但它不会为我解决这个问题。

在我的第一个文件address.Name.Value = source.Name.TrimSafe();上 但是在我的第二个文件上没问题。 .TrimSafe标记为不存在 从telescense我可以选择trim,trimEnd或trimStart,其中有trimSafe去了,为什么我不能使用它?

3 个答案:

答案 0 :(得分:3)

TrimSafe()不是标准的.NET方法。这表明TrimSafe()作为第一个文件中的方法存在,但从未被复制到第二个文件中,并且它是私有函数或非静态函数。

我会干净&重建你的项目。

答案 1 :(得分:0)

这听起来像是命名空间问题。

考虑一下:

// In some file somewhere
namespace firstNamespace
{
    Class MyString : String
    {
        public static TrimSafe() {}
    }
}

// The first file you copied from
namespace firstNamespace
{
    public void foo() { TrimSafe(); } // Works!
}

namespace secondNamespace
{
    public void fee() { TrimSafe(); } // Nope :(
}

要修复最后一个,您需要在顶部添加using firstNamespace;和其他using语句。原因是您复制的第一个文件与定义TrimSafe的文件名位于同一名称空间中。

在C ++中,您通常会#include您使用的每个类的所有引用的.h文件。

在C#中,您不能为类添加using语句,而是添加名称空间。您只需要using命名空间,并且该命名空间内的所有内容都随之出现。在命名空间xyz中定义的任何内容都可以看到命名空间xyz中定义的所有内容,而不必为每个类都设置using

您的第二个文件位于不同的命名空间中,因此它不知道第一个命名空间中的内容,因此它没有看到TrimSafe。

无论如何,这是我的猜测。

答案 2 :(得分:0)

看起来很熟悉,我猜你也在做Orchard网上商店的教程:) 您需要在项目中添加一个名为Helpers的文件夹,它应该包含此类:

    public static class StringExtensions {
    public static string TrimSafe(this string s) {
        return s == null ? string.Empty : s.Trim();
    }
}

只需包含需要方法的命名空间。