Nói rằng tôi có sau ba lớp/giao diện:Tại sao loại chung loại này không được chuyển đổi?
public interface IImportViewModel
{
}
public class TestImportViewModel : IImportViewModel
{
}
public class ValidationResult<TViewModel> where TViewModel : IImportViewModel
{
}
Như TestImportViewModel thực hiện IImportViewModel, tại sao sẽ dưới đây không phải biên dịch?
ValidationResult<IImportViewModel> r = new ValidationResult<TestImportViewModel>();
Tôi hiểu thông báo lỗi "Không thể chuyển đổi loại xác thực 'ValidationResult' thành 'ValidationResult'" có nghĩa là gì. Tôi chỉ không hiểu tại sao lại như vậy. Điều này sẽ không hiệp phương sai?
Tôi giả định của bạn class _TestImportViewModel_ được cho là _TViewModel_? (Mã trên không hiển thị TViewmModel lớp nào cả). –
Có. TestImportViewModel triển khai thực hiện IImportViewModel và do đó __should__ có thể được sử dụng như một triển khai TViewModel như TViewModel: IImportViewModel. – devlife
@Sam TViewmModel (aka) là một loại IImportViewModel không phải là một lớp. –
Reniuz