为什么我不能访问.TrimSafe

本文关键字:TrimSafe 访问 不能 为什么 | 更新日期: 2023-09-27 18:25:46

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

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

为什么我不能访问.TrimSafe

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

我会清洁&重建你的项目。

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

考虑一下:

// 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。

这是我的猜测。

看起来很熟悉,我想你也在做Orchard网店教程:)你需要在你的项目中添加一个名为Helpers的文件夹,它应该有这样的类:

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

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