Невозможно установить общедоступные свойства для экземпляра класса C#
Я пытаюсь написать свой первый тест NSpec в приложении Mobile Service. Я создал атрибут в спецификации. Но когда я пытаюсь получить доступ к этому элементу в следующей строке, я не могу получить доступ к общим свойствам экземпляра, потому что Visual Studio не распознает переменную.
AppointmentSpec.cs
public class AppointmentSpec : nspec
{
private AppointmentDTO _dto = new AppointmentDTO();
_dto.PatientId = "124234"; // Visual Studio is not regonizing _dto
}
AppointmentDTO.cs
public class AppointmentDTO
{
public string PatientId { get; set; }
// public string PathwayId { get; set; }
public string ItemId { get; set; }
public string Subject { get; set; } //Dr. Visit, labtest, labtest name, follow up, other...
// public string ProviderName { get; set; }
public string Location { get; set; } //clinic, hsopital name, etc
public string Address { get; set; } //street address
public string PhoneNumber { get; set; }
//to automatically add a corresponding appointment to the provider's calendar
public bool SetProviderAppointment { get; set; }
public string ProviderItemId { get; set; }
public List<string> ProviderItemIds { get; set; }
public bool IsVideoCall { get; set; }
public TimeSpan StartTime { get; set; }
public TimeSpan EndTime { get; set; }
public DateScheduleInfo EventDateSchedule { get; set; }
//public TimeScheduleInfo EventTimeSchedule { get; set; }
//public void Send(object target, string methodName, params object[] args)
//{
// var properties = GetProperties(target.GetType());
// var property = properties.First(p => p.Name == methodName);
// if(property == null)
// throw new ArgumentException($"{target.GetType()} has no property or method ");
// property.SetValue(target, args.First());
//}
//private static IEnumerable<PropertyInfo> GetProperties(Type t)
//{
// return t == null ? Enumerable.Empty<PropertyInfo>() : t.GetProperties().Union(GetProperties(t.BaseType));
//}
}
2 ответа
Решение
Сделайте присваивание внутри конструктора класса:
public class AppointmentSpec : nspec
{
private AppointmentDTO _dto = new AppointmentDTO();
public AppointmentSpec()
{
_dto.PatientId = "124234";
}
}
Вы получаете доступ _dto
в недопустимом контексте. Если вы хотели инициализировать PatientId
с некоторыми данными попробуйте это:
private AppointmentDTO _dto = new AppointmentDTO
{
PatientId = "124234"
};
Смотрите MSDN