C#ClassConstructorAssignedto'this'我有一个'幼稚'的问题。使用以下示例代码:publicclassThisClass{publicintThisClassID{get;放;}公共字符串ThisValue{得到;设置;}publicThisClass(){}publicThisClass(intthisClassID){使用(MyContextdbContext=newMyContext()){this=dbContext.CaseNotes.Find(thisClassID);}}}当然,我收到错误Cannotassignto'this'becauseitisread-only我知道的唯一两种解决方法是使用静态方法,或者分别分配给每个属性。有没有办法创建一个简单的构造函数来返回数据库实体?更新以下两个答案都是正确的,但我只接受一个。关于工厂和存储库模式的使用有一些有趣的讨论,当可能的答案被删除时,这些模式被忘记删除。争论同样平衡,一些人指出实体框架本身是一个使用存储库模式的工厂。问题本身有3票赞成票和2票反对票。答案似乎是没有单一的答案。您应该看看AutoMapper,您的代码可能如下所示://在您的应用程序/服务初始化类中的某处和某些方法中...Mapper.CreateMap();公共类ThisClass{publicintThisClassID{得到;放;}公共字符串ThisValue{得到;设置;}publicThisClass(){}publicThisClass(intthisClassID){使用(MyContextdbContext=newMyContext()){Mapper.Map(dbContext.CaseNotes.Find(thisClassID),this);}}}顺便说一下,这听起来不错。我不会在我自己的构造函数中填充域对象。这是存储库的一个很好的责任。有没有办法创建一个简单的构造函数,将数据库实体返回给它?实际上没有。理论上,您可以键入struct。然后,代码应该编译。您可以在结构中分配给它。可能你根本不应该使用构造函数。创建一个只返回Find结果的工厂方法。关于构造函数的一个不变的事实是它们每次都创建一个新对象。我不认为你想要这个。您可能希望保留现有的对象实例及其身份。以上就是C#学习教程:C#类构造函数赋值给'this'分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
