问题描述
我正在尝试将域模型中的可为空的属性(字符串?)绑定到tornadofx视图模型。但是我得到一个编译器错误。 可为空的属性是:idCard,电话和出勤
我的代码:
class Patient(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<Patient>(Patients)
var patientId: Int by Patients.patientId
var name: String by Patients.name
var lastName: String by Patients.lastName
var recordNumber: Int by Patients.recordNumber
var idCard: String? by Patients.idCard
var phone: String? by Patients.phone
var age: Int by Patients.age
var gender: Char by Patients.gender
var admission: DateTime by Patients.admission
var discharge: DateTime? by Patients.discharge
var specialty: String by Patients.specialty
}
class Patientviewmodel(patient: Patient) : viewmodel() {
val patientId = bind { patient.observable(Patient::patientId) }
val name = bind { patient.observable(Patient::name)}
val lastName = bind { patient.observable(Patient::lastName) }
val recordNumber = bind { patient.observable(Patient::recordNumber) }
val idCard = bind { patient.observable(Patient::idCard) }
val phone = bind { patient.observable(Patient::phone)}
val age = bind { patient.observable(Patient::age) }
val gender = bind { patient.observable(Patient::gender) }
val admission = bind { patient.observable(Patient::admission) }
val discharge = bind { patient.observable(Patient::discharge) }
val specialty = bind { patient.observable(Patient::specialty) }
}
编译器错误:
e: D:\projects\manager\src\main\kotlin\manager\model\Patient.kt: (49,18): Type inference Failed: Cannot infer type parameter T in inline fun <reified PropertyType : Property<T>,reified T : Any,ResultType : PropertyType> bind(autocommit: Boolean = ...,forceObjectProperty: Boolean = ...,defaultValue: T? = ...,noinline propertyProducer: () -> PropertyType?): ResultType
None of the following substitutions
(Boolean,Boolean,String?,() -> Property<String?>?)
(Boolean,Any?,() -> Property<String?>?)
can be applied to
(() -> ObjectProperty<String?>)
解决方法
尝试使用模型绑定执行此操作:
val patientId = bind(Patient::patientId)