C#不能直接转换类属性

时间:2015-02-12 08:04:29

标签: c# .net casting

我有一个继承自Result

的班级ResultTable
public class ResultTable : Result   

结果是ResultWrapper的属性。

public class ResultWrapper
{
   public Result Result { get; set; }
}

当我这样做时:

ResultTable myCastedItem = myResult.Result as ResultTable;  

我收到myCastedItem中的项目,但我想直接这样做:

If ( (ResultTable)myResult.Result.DataRows) // It does not let me. 

DataRowsResultTable的成员,但不是Result的成员。

3 个答案:

答案 0 :(得分:2)

你只是缺少一些大括号:

if (((ResultTable)myResult.Result).DataRows) // It will let you ;-).  

答案 1 :(得分:1)

你投错了财产。

(ResultTable)myResult.Result.DataRows

您需要将其更改为:

((ResultTable)myResult.Result).DataRows

答案 2 :(得分:0)

你需要用这样的大括号包围你的演员:

((ResultTable)myResult.Result).DataRows

或者你可以使用安全演员(请记住,因为可以返回null):

var casted = (myResult.Result as ResultTable);
if(casted!=null)
   casted.DataRows;

或者,使用c#6。操作者:

(myResult.Result as ResultTable).?DataRows