在C#中,我有三个类:Person,Cat和Dog.
Cat和Dog类都有方法Eat().
我希望Person类有一个属性'Pet'.
我希望能够通过Person之类的Person.Pet.Eat()调用Cat和Dog的Eat方法,但我不能,因为Pet属性需要是Cat或Dog类型.
目前我正在使用Person类中的两个属性:PetDog和PetCat.
现在这没关系,但如果我想要100种不同类型的动物作为宠物,那么我真的不想在Person类中拥有100种不同的Pet属性.
有没有办法使用接口或继承?有没有办法可以将Pet设置为Object类型,但仍然可以访问分配给它的动物类的属性?
我正在尝试在我的WPF项目中实现下面的代码,以便为具有动态列的DataGrid动态生成DataTemplates.我在这里找到了StackOverflow上的代码
public DataTemplate Create(Type type)
{
return (DataTemplate)XamlReader.Load(
@"<DataTemplate
xmlns=""http://schemas.microsoft.com/client/2007"">
<" + type.Name + @" Text=""{Binding " + ShowColumn + @"}""/>
</DataTemplate>"
);
}
Run Code Online (Sandbox Code Playgroud)
但是,在XamlReader.Load代码上,我收到错误"无法从'string'转换为'System.Xaml.XamlReader'.
我试图通过将代码更改为:
return (DataTemplate)XamlReader.Load(XmlReader.Create(
Run Code Online (Sandbox Code Playgroud)
但是我在字符串中传递无效字符时遇到错误.
另外,我不确定如何将TextBlock传递给此代码.我想我会创建一个TextBlock并将其作为Type参数传递,但我得到错误"无法从'System.Windows.Controls.TextBlock'转换为'System.Type'
任何帮助赞赏.
我正在使用TPL在C#中编写计算密集型程序.一些初步基准测试通过使用具有更多内核/线程的处理器显示出计算时间的显着减少.
但是,单个CPU上可用的线程数量有限(我认为即使是最好的Xeons资金也可以购买,目前大约有16个).
我一直在阅读有关如何在自己的机器中使用多个廉价CPU的"网格"渲染农场是增加整体核心数量的好方法,但我不知道如何实现其中一个.它是在操作系统级别使用Microsoft服务器技术实现的(如果是,如何实现?),还是我还需要修改C#代码本身?
任何帮助或现有信息的链接将不胜感激.
我正在寻找一种非递归算法(最好是在C#中),它将生成一组正数的所有和的列表.
例如,对于一组三个数字"1,2,3",以下七个总和是可能的:
1
2
3
1 + 2 = 3
1 + 3 = 4
2 + 3 = 5
1 + 2 + 3 = 6
最大设置大小将在50左右.我知道如何递归地处理这个问题,但是在处理类似问题时过去一直受到调用堆栈的限制,所以这次想要避免它.
我正在尝试检查引用是否为空,然后'MyMethod'使用它:
if (School.ClassRoom.Pupil.Age != null)
{
MyMethod(School.ClassRoom.Pupil.Age);
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然在第一行得到"对象引用未设置为对象的实例",因为不仅Age为null,而且Pupil和ClassRoom有时也为null.
我使用Try,Catch,最后得到了相同的问题,因为我在Try代码中遇到了同样的错误.
我不想要检查每个ClassRoom为null,然后每个Pupil为null,然后每次Age为null,每次我想使用此方法.
有更简单的方法吗?
我有一个单线程程序,它执行复杂,耗时的计算并报告这些程序的进度.
private void BtnExecute_Click()
{
ComplexCalculation(Object1);
ComplexCalculation(Object2);
ComplexCalculation(Object3);
}
Run Code Online (Sandbox Code Playgroud)
ComplexCalculation方法如下所示:
private void ComplexCalculation(Object MyObject)
{
(...do some time consuming operation on MyObject...);
WriteToTextboxGUI("50% Complete" + MyObject.Name);
(...do another time consuming operation on MyObject...);
WriteToTextboxGUI("100% Complete" + MyObject.Name);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,该WriteToTextboxGUI(string)方法使用进度更新GUI上的文本框.
我正在寻求采用多线程方法,以便在执行复杂计算时GUI保持响应.我已经阅读了相当多的内容BackgroundWorker,Threads一般情况下,以及当TaskTPL与.Net 4.0一起进入现场时如何简化/改进,现在如何Async和Await已经到达.Net 4.5,并想知道这些是否更新的技术可以让我重新编写我的应用程序(使用相对简单的代码),以便它可以:
任何人都可以指出一个满足这三个标准的简单解决方案吗?
PS此应用程序不会在服务器上运行,它将在桌面上的WPF中运行.
我有一个WPF用户控件,其中包含许多文本框和按钮.目前,只要创建控件的实例,这些文本框和按钮都会通过后面的代码动态创建并加载到ItemsControl中.唯一的硬编码XAML是ItemsControl的声明.
有时这可能有点迟钝.如果我摆脱ItemsControl并将文本框和按钮硬编码到usercontrol的XAML中,会更快吗?
c# ×5
wpf ×2
xaml ×2
algorithm ×1
asynchronous ×1
datatemplate ×1
itemscontrol ×1
math ×1
multicore ×1
null ×1
polymorphism ×1
recursion ×1
set ×1
silverlight ×1
xamlreader ×1