我正在使用派生類並使用as關鍵字將基類轉換爲它。當我這樣做時,派生類構造函數被調用,並且它的對象被初始化,但派生實例不會以初始化對象(具有空值)結束。這是一個代碼示例。使用「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->的基礎,而不是鹼基問題>派生或者是有工作別的東西嗎?
+1你說的沒錯,只有'只鑄造 - 沒有構造函數被調用。 – 2009-08-17 17:02:55
我已經驗證的是構造函數被擊中。我實際上試圖解決的是一個請求沒有指定所有主體參數的情況。這殺了我,因爲我到了對象結構中,進來的null表示一個空對象,當訪問成員時它將開始拋出異常。我可以在演員陣容中捕捉到空洞,但似乎應該有一種更優雅地照顧它的方法。 – TahoeWolverine 2009-08-17 19:41:09
您應該檢查JSON請求解串器是否正常工作。所以至少拋出一個不完整請求的異常。 – user7116 2009-08-17 20:17:02