我有LINQtoSQL生成的部分类User,紧接着是:
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[User]")]
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
...
然后我在我的项目中创建了单独的文件夹“Proxy”,并在那里添加了一些User类:
namespace LINQtoSQL_sample.Proxy
{
public partial class User
{
public static string GetActivationUrl()
{
return Guid.NewGuid().ToString("N");
...
当我尝试从同一项目的另一部分调用额外的静态方法时会发生问题。假设我有一个文件夹“SqlRepositoryImpl”和另一个部分类:
namespace LINQtoSQL_sample.SqlRepositoryImpl
{
public partial class SqlRepository
{
public bool CreateUser(User instance)
{
if (instance.ID == 0)
{
instance.added_date = DateTime.Now;
instance.activated_link = LINQtoSQL_sample.Proxy.User.GetActivationUrl();
...
正如您所看到的,我明确定义了我要调用的User类的哪个部分,因为IntelliSense没有建议我使用额外的方法。
请告知为何会出现这种情况以及我错在哪里?
答案 0 :(得分:2)
正如您所看到的,我明确定义了我要调用的User类的哪个部分,因为IntelliSense没有建议我使用额外的方法。
当你从一个类中调用一个方法时,该类中没有“部分”了。
如果您需要(并且可以)指定类的完整命名空间来从中调用方法,这意味着您实际上在两个不同的命名空间中有两个不同的类。如果两个partial
声明位于不同的名称空间中,那么您实际上已经声明了两个单独的类,而不是来自两个部分的单个类。