Ive нашел несколько примеров этой проблемы на других языках, таких как ruby или php, и они, похоже, указывают, что мне нужно будет что-то сделать of include, чтобы поддержать это, но я не могу точно понять это.Почему я не могу вызвать метод DateTime для объекта DateTime в другом классе в C#
у меня есть:
private void setLoansView(Member _member)
{
foreach (Loan loan in _member.Loans)
{
this.dt.Rows.Add(_member.Name, // dt is a datatable
loan.BookOnLoan.CopyOf.Title,
loan.TimeOfLoan.ToShortDateString(),
loan.DueDate.ToShortDateString(),
loan.TimeReturned.ToShortDateString());
}
займа выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace Library.Entities
{
public class Loan
{
[Key]
public int LoanId { get; set; }
[Required]
public DateTime? TimeOfLoan { get; set; }
public DateTime? DueDate { get; set; }
public DateTime? TimeReturned { get; set; }
[Required]
public Copy BookOnLoan { get; set; }
[Required]
public Member Loanee { get; set; }
}
}
На всех моих объектов DateTime в методе setLoansView()
я получаю «не содержит определения для "ToShortString()". Класс участника имеет ICollection<Loan>
, и именно там я получаю кредиты. Я не могу понять, почему я теряю доступ к методам DateTime, когда я обращаюсь к ним с ICollection
.
Совершенного спасибо. Таким образом, в 100% случаев все мои поля DateTime будут иметь значение, кроме 'DateTime TimeReturned'. Есть ли чистый и эффективный способ проверить, что в методе Add()? или мне нужно будет проверить с hasValue сначала перед Add()? –
@ChrisShields: способы проверки - это обычные условные выражения: 'if' и условный оператор'?: '. Это зависит от того, что вы хотите, если нет значения, например. 'loan.TimeReturned.HasValue? loan.TimeReturned.ToShortDateString: "n/a" '. – Jon
еще раз спасибо. Я пробовал иметь инструкцию if в качестве одного из аргументов, но не мог правильно получить синтаксис. Тем не менее, оператор, как вы предлагали, работает отлично. Я все еще пытаюсь привыкнуть к их использованию :) –