Аноним
Зарегистрирован: 18 February 2005
Сообщения: 13860
Примеры кода: 0
|
Re[3]: Code requirements and completion criteria (.Net) |
18 January 2007 21:41 |
|
|
|
|
Ситуация в том что допустим есть
[Serializable]
class User{.
public User(){
}
private int id;
public int Id{
get/set
}
..
}
есть веб служба которая возвращает User.. Веб служба дергает интерфейс IGetUser or IGetUsers объекта __ComObject..
сейчас реализованно вроде этого(Написал чтоб показать суть моих сомнений)
class Convert{
static User Convert(IGetUser user){
if(user !=null){
User newUser= new User();
newUser.Id= user.id;
return newUser
}
}
static Collection<User> Convert(IGetUsers users){
if(users !=null){
collection<User> userCollection = new Collection<User>;
foeach(user in users){
User newUser= convert(user);
userCollection.Add(newUser);
}
return userCollection;
}
}
.......
}
--webservice -->
[WebMethod]
User GetUser(){
User user = Convert.Convert(iGetUser)
return user;
}
[WebMethod]
Collection<User> GetUsers(){
return Convert(iGetUsers);
}
Вот что меня смущает:в классе Convert очень много перегрузок метода convert( Guest Convert(guset){},Collection<Guset> Convert(IGetGuests) ,Man convert(man) и т.д)
поэтому предложил выделять смежные методы в регион т.е
#region User
User Convert(user);
Collection<User> Convert(IGetUsers);
#endregion
провучало мнение что регион программеры из Microsof не часто употребляют ...мол если чтоб удобнее было надо частичные классы .
А мое мнение это переписать так
[Serializable]
class User{.
public User(){
}
public User(IGetUser){
if(user !=null){
this.id= user.id;
}
}
private int id;
public int Id{
get/set
}
..
} OR
[Serializable]
class User{.
public User(){
}
public static User Convert(IGetUser user){
if(user !=null){
User newUser = new User();
newUser.Id=user.id
return newUser
}
}
public static Collection<User> Convert(IGetUserS users){....}
private int id;
public int Id{
get/set
}
.
} т.е логику конвертирования типа я хочу описывать в самом типе а ни в каком нить другом классе.
Ну вот и все :xz:
Данное сообщение получено с сайта RSDN
|
|