2015-04-02 72 views
-2

我正在工作到我的游戏的服务器端,它几乎完成,但今天我遇到了问题...此游戏基于2种形式,触地和死亡竞赛,在游戏结束时,服务器必须知道结果。这是一个在线游戏。当我结束比赛或者球员出去时,服务器崩溃了,不应该是,它只是回到房间。它给我以下错误:无法对类型输入对象“类型”c#

[ERROR]: Unable to cast object of type 'B3S.Core.Data.GameScore' to type 'B3S.Core.Data.TDGameScore'. 
    in B3S.Core.Data.Player.SetNewTDStats(Boolean win) 
    in B3S.Core.Data.Room.BroadcastBriefing(Boolean result) 
    in B3S.Core.Data.Room.<BeginResult>d__2b.MoveNext() 
--- End of stack trace --- 
    in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state) 
    in System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) 
    in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    in System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    in System.Threading.ThreadPoolWorkQueue.Dispatch() 
    in System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 

任何人都可以帮助我?

这是B3S.Core.Data.GameScore的源:

public class GameScore 
    { 
     public DateTime JoinTime { get; set; } 
     public uint TotalPoints { get; set; } 

     public virtual uint CalculateEXP() 
     { 
      return 0; 
     } 
    } 

这是B3S.Core.Data.TDGameScore的源:

public class TDGameScore : GameScore 
{ 
    public uint TDScore { get; set; } 
    public uint TDAssists { get; set; } 

    public uint Kills { get; set; } 
    public uint KillAssists { get; set; } 
    public uint Offense { get; set; } 
    public uint OffenseAssists { get; set; } 
    public uint Defense { get; set; } 
    public uint DefenseAssists { get; set; } 
    public uint Recovery { get; set; } 

    public override uint CalculateEXP() 
    { 
     var ts = DateTime.Now - JoinTime; 
     if (ts.TotalSeconds < 0 || TotalPoints == 0) 
      return 0; 
     return (uint)ts.TotalSeconds/4 + (TDScore * 15) + (100 * TotalPoints/(500 + 2 * TotalPoints) * 14); 
    } 
} 
+1

错误信息的哪部分你不明白? – SLaks 2015-04-02 17:28:27

+1

我建议您使用不以可能冒犯某些人的贬义词开头的不同名称空间名称。 – deloreyk 2015-04-02 18:16:38

+0

我必须使用TDGameScore,因为它甚至是GameScore,但有其他属性,因为它是TouchDown游戏模式。 – 2015-04-02 18:25:19

回答

1

的TDGameScore是子类(派生类)的GameScore。 最有可能的是,你传递了一个不是TDGameScore的GameScore实例。您必须检查何时创建了有问题的实例,以及它为什么不是正确的子类型。

+0

我不知道如何编辑工作...... 我尝试了很多东西,但总是出现同样的错误。 – 2015-04-02 18:23:32

相关问题