파생 클래스를 사용하고 as 키워드를 사용하여 기본 클래스를 캐스팅했습니다. 이렇게하면 파생 클래스 생성자가 호출되고 개체가 초기화되지만 파생 인스턴스가 초기화 된 개체 (null이 있음)로 끝나지 않습니다. 다음은 코드 샘플입니다."as"키워드를 사용하여 개체 초기화가 손실되었습니다.
// classes
public class Request
{
public Request();
public Header Header{get;set;}
}
public class CreateRequest : Request
{
public Foo Foo{get;set;}
public Bar Bar{get;set;}
public CreateRequest():base()
{
this.Foo = new Foo();
this.Bar = new Bar();
}
}
public class SomeClass
{
private Response ProcessCreateRequest(Request request)
{
// request comes from a json request
CreateRequest createRequest = request as CreateRequest;
// values of Foo and Bar are null
[...]
}
}
"로"일반적으로 derived-> 기본 사용 및 BASE-되지 않는 문제> 파생 또는 직장에서 뭔가 다른 여기에있다?
+1 당신이 맞습니다,'단지'캐스트 - 아무 생성자도 호출되지 않습니다. –
내가 확인한 것은 생성자가 충돌한다는 것입니다. 내가 실제로 풀려고하는 것은 모든 신체 매개 변수가 지정되지 않은 상태에서 요청이 들어오는 경우입니다. null이 오는 null 객체를 의미하는 객체 구조에 도착한 이후 멤버가 액세스 될 때 예외를 throw하기 시작합니다. 캐스트 한 후에 null 값을 잡을 수는 있지만 정상적으로 처리 할 수있는 방법이 있어야합니다. – TahoeWolverine
JSON 요청 디시리얼라이저가 제대로 작동하는지 확인해야합니다.최소한 불완전한 요청에 대해서는 예외를 던지십시오. – user7116