Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行不同的基于代码的类型_C# - Fatal编程技术网

C# 运行不同的基于代码的类型

C# 运行不同的基于代码的类型,c#,C#,我想用我的Piece类的子类型对象为我的WPF应用程序调用一个方法。我的问题是子类型对象的属性比文本对象的属性多 你知道比我在FillForm示例中更好地处理这个问题的方法吗 示例方法: public void FillForm(Piece currentPiece) { pieceIdTextBox.Text = currentPiece.id.ToString(); pieceNameTextBox.Text = currentPiec

我想用我的Piece类的子类型对象为我的WPF应用程序调用一个方法。我的问题是子类型对象的属性比文本对象的属性多

你知道比我在FillForm示例中更好地处理这个问题的方法吗

示例方法:

public void FillForm(Piece currentPiece)
{    
            pieceIdTextBox.Text = currentPiece.id.ToString();
            pieceNameTextBox.Text = currentPiece.title;
            pieceDescriptionTextBox.Text = currentPiece.description;
            if (!currentPiece.GetType().ToString().Equals("Namespace.Text"))
            {
                pieceFileSelectURLTextBlock.Text = (currentPiece as Namespace.Image).filePath;
                SetPreviews((currentPiece as Namespace.Image).filePath);
            }

}

谢谢

为什么不将方法更改为以下更安全的类型

public void FillForm(Piece currentPiece)
{    
    pieceIdTextBox.Text = currentPiece.id.ToString();
    pieceNameTextBox.Text = currentPiece.title;
    pieceDescriptionTextBox.Text = currentPiece.description;
    if (currentPiece as Namespace.Image imagePiece)
    {
        pieceFileSelectURLTextBlock.Text = imagePiece.filePath;
        SetPreviews(imagePiece.filePath);
    }
}
进行安全广播:

public void FillForm(Piece currentPiece)
{    
            pieceIdTextBox.Text = currentPiece.id.ToString();
            pieceNameTextBox.Text = currentPiece.title;
            pieceDescriptionTextBox.Text = currentPiece.description;

            var imagePiece = currentPiece as Image;
            if(imagePiece != null)
                pieceFileSelectURLTextBlock.Text = imagePiece .filePath;
                SetPreviews(imagePiece .filePath);
            }

}

不知道您实际使用它的目的是什么,但通常如果某个继承类型的行为应该不同,您会将该代码放在该类抽象或虚拟方法中。你想干什么?你的最终目标是什么?你的目标是什么?我的问题是,子类型对象比文本对象获得更多属性。你知道一种比我在FillForm示例中更好的方法吗?这只是一个暗箭伤人的问题,但您是否在问如何强制转换或如何处理多个派生类型?因为currentPiece.GetType.ToString.EqualNamespace.Text可以很容易地替换为ifcurrentPiece is Text。我想为虚拟展览构建一个后端。数据模型将与Unity项目共享。所以我不想给它增加太多的依赖性。我仍然不明白为什么你要检查文本然后转换成图像。
public void FillForm(Piece currentPiece)
{    
            pieceIdTextBox.Text = currentPiece.id.ToString();
            pieceNameTextBox.Text = currentPiece.title;
            pieceDescriptionTextBox.Text = currentPiece.description;

            var imagePiece = currentPiece as Image;
            if(imagePiece != null)
                pieceFileSelectURLTextBlock.Text = imagePiece .filePath;
                SetPreviews(imagePiece .filePath);
            }

}