У меня есть следующее сидение с перегруженными конструкторами, с которыми я изо всех сил пытаюсь найти хорошее решение. Я не вижу, как использовать промежуточное назначение с цепочкой конструкторов.Цепочка конструктора с промежуточными переменными
Следующая не является действительным, но показывает, что я хочу сделать
public MyThing(IServiceLocator services, int? userId)
{
// blah....
}
public MyThing(IServiceLocator services, string userName)
{
User user = services.UserService.GetUserByName(userName);
int userId = user == null ? null : (int?)user.Id;
// call the other constructor
this(services, userId);
}
Единственный способ, которым я знаю, чтобы написать выше действительного кода
public MyThing(IServiceLocator services, string userName)
: this(services,
services.UserService.GetUserByName(userName) == null ?
null : (int?)services.UserService.GetUserByName(userName).Id)
, который не только некрасиво код , но также требует двойного вызова базы данных (если только компилятор не достаточно умный, чтобы справиться с этим, что я сомневаюсь).
Есть ли лучший способ написать выше?
Если болит, не делайте этого :-) – VVS 2010-12-07 12:11:09