나는 async/await에 완전히 익숙하지 않으며 2 년 전에 작성한 완전히 동기적인 앱을 "개선"해왔다. 나는 나의 해결책에 만족하지 못한다는 다음과 같은 상황을 가지고있다.추상 클래스의 자식에 대해 정적 생성자를 만들 수 있습니까?
XAML은 다음과 같은 두 가지 클래스에 바인딩 :
XAML
private InsuranceEditor _primaryinsurance;
public InsuranceEditor PrimaryInsurance
{
get { return _primaryinsurance; }
set { if (_primaryinsurance == value) return; _primaryinsurance = value; OnPropertyChanged("PrimaryInsurance"); }
}
private InsuranceEditor _secondaryinsurance;
public InsuranceEditor SecondaryInsurance
{
get { return _secondaryinsurance; }
set { if (_secondaryinsurance == value) return; _secondaryinsurance = value; OnPropertyChanged("SecondaryInsurance"); }
}
클래스, PrimaryInsurance 및 SecondaryInsurance 추상 클래스 보험에서 상속 :
abstract class InsuranceEditor : SimpleViewModelBase, ISave, IDataErrorInfo
{
.................
// Constructor
public InsuranceEditor(PatientDemographicsEditor patient, Billing service)
{
...
}
공장 패턴 사용을 PrimaryInsurance의 비동기식 건설 (Async OOP Constructor)
private async Task<PrimaryInsurance> InitializeAsync()
{
// asyncData = await GetDataAsync();
return this;
}
public static Task<PrimaryInsurance> Create(PatientDemographicsEditor patient, Billing service)
{
var ret = new PrimaryInsurance(patient, service);
return ret.InitializeAsync();
}
// Constructor
private PrimaryInsurance(PatientDemographicsEditor patient, Billing service)
: base(patient, service)
{
Editor_Id = 1;
........
}
class SecondaryInsurance : InsuranceEditor
{
// Constructor
private SecondaryInsurance(PatientDemographicsEditor patient, Billing service)
: base(patient, service)
{
Editor_Id = 2;
............................
}
}
논리적으로는 기본 및 보조 보험이 모두 Editor_Id
만 다르므로 일반적인 InsuranceEditor
에서 상속하는 것이 자연스럽게 보입니다. 이제 문제는 "올바르게"비동기/대기를 1 차 및 2 차 보험에 적용하는 것입니다. (. 반드시 추상 클래스 InsuranceEditor
의 정적 메서드) Create(...)
는 PrimaryInsurance
의 정적 방법으로 인식되고
PrimaryInsurance = await PrimaryInsurance.Create(....)
가이 작업을 수행 할 수 있습니다 뭔가처럼되고 사용 하시겠습니까?
편집 # 1. 이 질문을 게시 한 후, 나는 이미 질문했을 수 있습니다, 생각하고있어 What's the correct alternative to static method inheritance? 그리고 내가 원하는 것은 C에서 할 수 없습니다. #. 이 올바른지?
편집 # 2 : 나는 VS에 데 문제는 사용 문을 함께 제공 :
PrimaryInsurance = 기다리고 PrimaryInsurance.Create (환자, 빌링);
VS 나에게 그 이야기 :
회원 'InsuranceEditor.Create (PatientDemographicsEditor, 청구)' 인스턴스를 참조하여 액세스 할 수 없습니다; 유형 이름으로 자격을 대신
그리고
그때 VS는 작성 (...) (오류가 없도록)는 달마 티아 InsuranceEditor 클래스에서이 만드는 아닌 PrimaryInsurance 수 있도록 허용하는 경우 수업.internal Task<InsuranceEditor> Create(PatientDemographicsEditor patient, Billing bILLING)
{
throw new NotImplementedException();
}
내가 뭘 잘못하고 있니?
모두가 다른 경우 'Editor_Id'가 왜 하나의 클래스를 사용하고 Editor_Id를 매개 변수로 전용 생성자에 전달하지 않는가? 그러면 보험 기사 작성자를 기다리십시오. (...) 또는 InsuranceEditor.CreateSecondary (...)를 기다려주십시오. –
@ScottChamberlain 그 질문을 한 후에 나에게 일어난 일입니다. 그러나 더 어려운 다른 경우를 볼 수 있습니다. 따라서 자식 클래스에 정적 Create를 사용하여 상속을 사용할 수있는 방법에 대한 아이디어가 필요합니다. –
나는이 질문에 당신의 질문이 무엇인지 잘 모르겠습니다. 당신은 "할 수 있습니까?"라고 묻습니다.하지만 당신의 질문에 실제 사례가있는 것처럼 보입니다. 당신의 질문은 정확히 무엇입니까? –