我正在使用派生类并使用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