C# 4.0 来自另一个DLL实现错误的控制台应用程序接口
我在DLL中有一个接口,正在控制台应用程序中实现它以进行测试 我的界面如下C# 4.0 来自另一个DLL实现错误的控制台应用程序接口,c#-4.0,console-application,C# 4.0,Console Application,我在DLL中有一个接口,正在控制台应用程序中实现它以进行测试 我的界面如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Gemini.Data.Interfaces { public interface IUser { IEnumerable<IUserDetails> UserProfiles { ge
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Gemini.Data.Interfaces
{
public interface IUser
{
IEnumerable<IUserDetails> UserProfiles { get; set; }
string AdUserName { get; set; }
}
public interface IUserDetails
{
int UserId { get; set; }
string DisplayUserName { get; set; }
string OfficeCode { get; set; }
string UserEmail { get; set; }
string AdLogin { get; set; }
bool? LastActiveUser { get; set; }
Gemini.Data.App_Consts.Access_Rights UserAccess { get; set; }
bool IsPM { get; set; }
bool IsSPM { get; set; }
bool IsVdbUser { get; set; }
DateTime? LastModified { get; set; }
DateTime? LastLoginUse { get; set; }
int? LastModifiedBy { get; set; }
}
}
using System;
using System.Collections.Generic;
using Gemini.Data.Interfaces;
namespace ConsoleApplication2
{
public class User : Gemini.Data.Interfaces.IUser
{
private IEnumerable<IUserDetails> _UserProfiles = null;
#region IUser Members
public IEnumerable<IUserDetails> UserProfiles
{
get { return _UserProfiles; }
set { _UserProfiles = value; }
}
public string AdUserName { get; set; }
#endregion
}
class Program
{
static void Main(string[] args)
{
User u = new User();
Gemini.Data.Main.UserDetails ud = new Gemini.Data.Main.UserDetails(u, "Qpirate");
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间Gemini.Data.Interfaces
{
公共接口IUser
{
IEnumerable用户配置文件{get;set;}
字符串AdUserName{get;set;}
}
公共界面详细信息
{
int UserId{get;set;}
字符串DisplayUserName{get;set;}
代码字符串{get;set;}
字符串UserEmail{get;set;}
字符串AdLogin{get;set;}
bool?LastActiveUser{get;set;}
Gemini.Data.App_Consts.Access_Rights UserAccess{get;set;}
bool IsPM{get;set;}
bool-IsSPM{get;set;}
bool IsVdbUser{get;set;}
DateTime?LastModified{get;set;}
DateTime?LastLoginUse{get;set;}
int?LastModifiedBy{get;set;}
}
}
当我尝试在测试应用程序中使用它时,我得到以下结果
命名空间“Gemini.Data.Interfaces”中不存在类型或命名空间名称“IUser”(是否缺少程序集引用?)
控制台应用程序如下所示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Gemini.Data.Interfaces
{
public interface IUser
{
IEnumerable<IUserDetails> UserProfiles { get; set; }
string AdUserName { get; set; }
}
public interface IUserDetails
{
int UserId { get; set; }
string DisplayUserName { get; set; }
string OfficeCode { get; set; }
string UserEmail { get; set; }
string AdLogin { get; set; }
bool? LastActiveUser { get; set; }
Gemini.Data.App_Consts.Access_Rights UserAccess { get; set; }
bool IsPM { get; set; }
bool IsSPM { get; set; }
bool IsVdbUser { get; set; }
DateTime? LastModified { get; set; }
DateTime? LastLoginUse { get; set; }
int? LastModifiedBy { get; set; }
}
}
using System;
using System.Collections.Generic;
using Gemini.Data.Interfaces;
namespace ConsoleApplication2
{
public class User : Gemini.Data.Interfaces.IUser
{
private IEnumerable<IUserDetails> _UserProfiles = null;
#region IUser Members
public IEnumerable<IUserDetails> UserProfiles
{
get { return _UserProfiles; }
set { _UserProfiles = value; }
}
public string AdUserName { get; set; }
#endregion
}
class Program
{
static void Main(string[] args)
{
User u = new User();
Gemini.Data.Main.UserDetails ud = new Gemini.Data.Main.UserDetails(u, "Qpirate");
}
}
}
使用系统;
使用System.Collections.Generic;
使用Gemini.Data.Interfaces;
命名空间控制台应用程序2
{
公共类用户:Gemini.Data.Interfaces.IUser
{
私有IEnumerable_UserProfiles=null;
#区域IUser成员
公共IEnumerable用户配置文件
{
获取{return\u UserProfiles;}
设置{u UserProfiles=value;}
}
公共字符串AdUserName{get;set;}
#端区
}
班级计划
{
静态void Main(字符串[]参数)
{
用户u=新用户();
Gemini.Data.Main.UserDetails ud=新的Gemini.Data.Main.UserDetails(u,“Qpirate”);
}
}
}
VisualStudio似乎引用了这些接口,我可以调用这些类的Go to定义
有人知道我可以试试别的吗
我已经检查了控制台应用程序的目标是否与DLL的.NET Framework相同。同样的问题曾经发生在我身上,我发现程序集名称和控制台应用程序名称在我的情况下是相同的 要进行故障排除,我建议首先确保dll和控制台应用程序的程序集名称不同 如果这不能解决问题,请尝试指定不同的名称空间(项目选项卡中的默认名称空间和重命名现有名称空间)
如果这也无法解决问题,请尝试先将dll的代码合并到应用程序中,然后逐个移动。我希望您的代码库很小。我最终删除了旧的解决方案并重新开始,但我确实注意到,当我创建控制台应用程序时,目标框架是“.NET Framework Client Profile”