C# 如何使用公共方法,例如AddUser与域对象OldVersionProject.User和NewVersionProject.User
我的意思是,我有两个对象,其变量和名称的数量完全相同,只有一个区别,即它们存储在两个不同的程序集中C# 如何使用公共方法,例如AddUser与域对象OldVersionProject.User和NewVersionProject.User,c#,dll,assemblies,C#,Dll,Assemblies,我的意思是,我有两个对象,其变量和名称的数量完全相同,只有一个区别,即它们存储在两个不同的程序集中 是否可以在dll中标记为相同的对象,这样我就可以使用旧项目中的“User”对象和新项目中的“User”对象,并使用相同的公共服务AddUser这需要一个接口 namespace OldVersionProject { public class User : IUser { } } namespace NewVersionProject { public class
是否可以在dll中标记为相同的对象,这样我就可以使用旧项目中的“User”对象和新项目中的“User”对象,并使用相同的公共服务AddUser这需要一个接口
namespace OldVersionProject
{
public class User : IUser
{
}
}
namespace NewVersionProject
{
public class User : IUser
{
}
}
public interface IUser
{
// common properties
}
那么在你的共同服务中
public void AddUser(IUser user)
{
// user is now version independant
}
将
User
类提取到共享库中,例如,BusinessObjects
,并从需要User
类的所有项目中引用该库。yes。。我在想这个。我认为这是最好的答案。非常感谢。虽然有两个版本的User
,但这就是问题所在-它们相互冲突。@James这并不意味着我的答案是错误的。如果两个项目中的User
类只共享几个属性并像DTO一样工作,并且将一个类粘贴到共享库中,那么可以通过从这两个项目中删除User
类来解决这个问题。这只取决于您希望更改多少代码。如果我将问题改为“我有一个User
类的多个版本,我需要在一个通用方法中支持该类”,您是否仍会回答相同的问题?我就是这么看的……我想这就是为什么人们对事物有不同的理解。@James我并不是说界面不是一个选项,但你已经给出了答案。我有偏见,因为我在问题中读到了“公共服务AddUser()
”,我甚至建议调出或映射到CreateUser
DTO。我认为没有足够的信息将我们的任何答案选为“最佳”,更不用说有“错误”答案了。:-)