2011-01-30 78 views
0

我有两个对象。其中一个有另一个目的。面向对象问题C#

User  
----- 
ID 
Name 
Surname 

UserAddress 
------------ 
ID 
UserID 
Address 

当我改变第一个(User)时,第二个(UserAddress)中的这个对象不会改变。我该如何解决它?

我正在添加哈希表的对象。当我需要列出数据时,我使用这个散列表。当我更新对象时,我在散列表中找到这个对象的索引。之后我更新。但是隐藏在第二个对象中的这个对象没有被更新。

我正在考虑从数据库userAddress对象用户地址信息。

_userAddress= new userAddress(); 

_userAddress.ID = Convert.ToInt32(d["ID"]); 

_userAddress.Address= d["Address"].ToString(); 

////I am taking user object here. _userAddress.UserID=   (Address)_userDa.Detail(Convert.ToInt32(d["UserID"]), conStr); 

当我更改User对象时,userAddress对象中的同一用户对象不会更改。

+0

`UserAddress`如何包含`User`实例?我看到`UserID`,它假定对应于现有`User`的ID,但我没有看到引用User的实例的属性。 – 2011-01-30 22:16:01

回答

0

除非两个类彼此之间有引用,否则您不可能看到这些更改。你可以有类似的东西 -

class User 
{ 
    UserAddress Address {get;set;} 
    //Other properties 
} 

User u = new User(); 
u.Address = new UserAddress(); 

同样,UserAddress应该引用User对象,而不是单独的ID。

0

它看起来像你试图将RDBMS行为应用于对象。如果UserID字段在C#代码之外没有提供有用的用途,则应该将其删除。

无论如何,将User作为属性添加到UserAddress类。从UserAddress中删除UserId。

0

听起来就像你在用关系数据库的方式思考。

你的用户对象应该有一个UserAddress对象作为属性(或者它们的集合,假设允许多个地址 - 因此需要关系)。然后

你的数据访问实现应该照顾更新的基础表(或任何存储机制您正在使用)

0

什么类型的ID?

如果它是值类型,它不能工作。

如果是引用类型,请确保您有对同一个ID对象的引用。

更好的方法是有提述─ 用户 - > UserAddress UserAddress->用户

然后,你可以做 - userAddress.User.ID 或user.ID 得到相同的ID。