我正在使用派生类并使用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
[...]
}
}
Run Code Online (Sandbox Code Playgroud)
是"as"通常用于派生 - >基础而不是基础 - >派生的问题还是在这里有其他工作吗?
直到jon双向飞碟出现才能正确回答这个问题,据我所知,'as'关键字只是一种强制转换的方式,如果演员表无效则会抑制异常; 它不应该自己调用任何构造函数
那么你有没有验证(例如在调试器中)传入的对象在强制转换之前是否已正确初始化?