为什么我不能访问.TrimSafe
本文关键字:TrimSafe 访问 不能 为什么 | 更新日期: 2023-09-27 18:25:46
将一些代码从一个控制器复制到另一个控制器。两个文件都有相同的using语句,但它不会为我"解决"这个问题。
在我的第一个文件address.Name.Value = source.Name.TrimSafe();
上不过,在我的第二个文件中是可以的。TrimSafe标记为不存在从telescense中,我可以选择trim、trimEnd或trimStart,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();
}
}
只需在需要方法的地方包含命名空间。