У меня есть веб-сервис и веб-сайт (оба на C #) в одном решении (на данный момент); У меня также есть библиотека классов в решении. И веб-служба, и веб-сайт ссылаются на эту библиотеку классов.
У веб-службы есть WebMethod, который создает объект из библиотеки и возвращает его. Веб-сайт вызывает это и пытается поместить его в объект Trainer (еще раз, из той же библиотеки)
ProFitWebService.Service serviceConn = new ProFitWebService.Service();
ProFitLibrary.Trainer authenticatedTrainer = (ProFitLibrary.Trainer)serviceConn.GetAuthenticatedTrainer(_TrainerLogin.UserName);
однако происходит следующее: «Не удается преобразовать тип ProFitWebService.Trainer в ProFitLibrary.Trainer»
Вот веб-метод:
[WebMethod]
public ProFitLibrary.Trainer GetAuthenticatedTrainer(string email)
{
ProFitLibrary.Trainer returnTrainer = new ProFitLibrary.Trainer();
SqlCommand cmd = new SqlCommand("SELECT * FROM Trainers WHERE EmailAddress = '" + email + "'", conn);
conn.Open();
SqlDataReader reader;
reader = cmd.ExecuteReader();
while (reader.Read())
{
returnTrainer.TrainerId = reader.GetInt32(reader.GetOrdinal("TrainerId"));
returnTrainer.FirstName = reader.GetString(reader.GetOrdinal("FirstName"));
returnTrainer.LastName = reader.GetString(reader.GetOrdinal("LastName"));
returnTrainer.PhoneNumber = reader.GetString(reader.GetOrdinal("PhoneNumber"));
returnTrainer.Address = reader.GetString(reader.GetOrdinal("Address"));
returnTrainer.City = reader.GetString(reader.GetOrdinal("City"));
returnTrainer.PostalCode = reader.GetString(reader.GetOrdinal("PostalCode"));
returnTrainer.EmailAddress = reader.GetString(reader.GetOrdinal("EmailAddress"));
}
return returnTrainer;
}
Обновление: Изменение объекта Trainer на ProFitWebService.Trainer на веб-сайте устранило проблему:
ProFitWebService.Service serviceConn = new ProFitWebService.Service();
ProFitWebService.Trainer authenticatedTrainer = (ProFitWebService.Trainer)serviceConn.GetAuthenticatedTrainer(_TrainerLogin.UserName);
Я думаю, что ответом на это будет просто то, что библиотечные объекты, возвращаемые из веб-службы, всегда будут основаны на типе / с префиксом службы - и я не должен ссылаться на класс Library как с веб-сайта, так и с службы - мне следует просто создать версию объекта WebService - ProFitWebService.Trainer и т. д.
Может ли кто-нибудь подтвердить это как стандартную практику, когда вы используете библиотеки в веб-сервисе? или если я делаю это более сложным, то это действительно так!