私は派生クラスを使用しており、as キーワードを使用して基本クラスをそれにキャストしています。これを行うと、派生クラスのコンストラクターが呼び出され、オブジェクトが初期化されますが、派生インスタンスは初期化されたオブジェクトにはなりません (null があります)。これがコードサンプルです。
// 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
[...]
}
}
「as」が通常、base->derived ではなく、derived->base に使用されるという問題はありますか、それともここで何か他のことが機能していますか?