将一些代码从一个控制器复制到另一个控制器。这两个文件都有相同的使用语句,但它不会为我解决这个问题。为什么不能访问.TrimSafe?
在我的第一个文件address.Name.Value = source.Name.TrimSafe();
是好的,但在我的第二个文件。 .TrimSafe标记为不存在 从telescense我可以选择修剪,trimEnd或trimStart哪里有trimSafe去了,为什么我不能使用它?
将一些代码从一个控制器复制到另一个控制器。这两个文件都有相同的使用语句,但它不会为我解决这个问题。为什么不能访问.TrimSafe?
在我的第一个文件address.Name.Value = source.Name.TrimSafe();
是好的,但在我的第二个文件。 .TrimSafe标记为不存在 从telescense我可以选择修剪,trimEnd或trimStart哪里有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语句顶部添加using firstNamespace;
。原因是你从第一个文件拷贝到TrimSafe所在的同一个命名空间。
在C++中,您通常使用#include
所有引用的.h文件。
在C#中,您不会为类添加using
语句,而是为名称空间添加语句。您只需要名称空间为using
,并且该名称空间内的所有内容都伴随着它。在命名空间xyz
中定义的任何内容都可以在命名空间xyz
中定义其他所有内容,而不必为每个类设置using
。
您的第二个文件位于不同的命名空间中,因此它不知道第一个命名空间中的内容,因此它看不到TrimSafe。
无论如何,这是我的猜测。
看起来很熟悉,我想你是做果园网上商店教程以及:) 您需要在您的项目称为助手添加文件夹,它应该有这个类是:
public static class StringExtensions {
public static string TrimSafe(this string s) {
return s == null ? string.Empty : s.Trim();
}
}
只需包含需要您的方法的名称空间。
这两个文件是否使用相同的命名空间? – Shaz
不,但它们应该不同 – John
查看第一个文件中的“使用”指令列表,并将它们与第二个文件进行比较。 TrimSafe()可能是未在第二个文件中导入的扩展方法。 –