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。我认为没有足够的信息将我们的任何答案选为“最佳”,更不用说有“错误”答案了。:-)