我遇到了一个我似乎无法找到任何逻辑的错误.我有这个File对象,它是这样创建的:
File file = new File("utilities/data/someTextFile.txt");
Run Code Online (Sandbox Code Playgroud)
然后我做了file.exists(),它返回false(!?).如果找不到该文件,我正在登录f.getAbsolutePath()文件.当我看路径时,似乎没问题.我可以将完整路径复制粘贴到Windows中的"运行"窗口,文件打开正常.
该文件始终存在,在我的应用程序运行期间不会被删除或更改.它位于本地机器上.
这似乎只在某些情况下发生.我可以随时重现故障,但我确信文件对象的路径不会因我为重现故障而采取的操作而改变.
什么可以导致file.exists()返回虚假?这是否与权限或文件锁等有关?
我正在尝试数据绑定到这个ItemsControl:
<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
通过使用它DataTemplate,我试图单独定位我的Node元素Canvas正确:
<DataTemplate DataType="{x:Type Model:EndNode}">
<Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,它没有按预期工作.我的所有节点元素都在相同位置绘制在彼此之上.有关如何实现这一目标的任何建议?
我的数据集由三个向量(x,y和z)组成.我将这些值绘制为带有plot3(x,y,z)的3d图中的点,这很好.我也想在同一个情节中展示一架飞机.为了得到这个图的数据,我在x和y上使用线性回归得到一个新的z.
这是它的样子:
我希望冲浪只用一种颜色(比如浅蓝色或灰色)填充,并设置不透明度,使其透明.我怎样才能做到这一点?
尝试将对象序列化为XML时遇到了一些问题.尝试序列化"配置文件"属性时出现问题,该属性是配置文件项列表.个人资料是我自己的类型.理想情况下,配置文件类型应该是抽象的,但事实并非如此,因为XML序列化需要无参数的ctor."个人档案"属性包含"IncomeProfile","CostProfile","InvestmentProfile"等类型的项目,这些项目当然都继承自"个人档案".
正如我所读到的那样,序列化它本身不受支持,因为XmlIncludeAttribute只允许一个继承类型.即
[XmlInclude(typeof(IncomeProfile))]
public List<Profile> Profiles { get; set; }
Run Code Online (Sandbox Code Playgroud)
解决这个问题时最好的做法是什么?我尝试过使用IXmlSerializable和反射的不同解决方案,但我似乎无法将每个配置文件反序列化为正确的类型(它们最终都使用Profile类型的ReadXml(XmlReader reader)方法,即使Visual Studio调试器说对象的类型是"IncomeProfile"或"CostProfile".这是我当前的反序列化代码,它将xml反序列化为三个Profile对象,而不是两个IncomeProfile和一个CostProfile:
while(reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "Profile")
{
String type = reader["Type"];
var project = (Profile)Activator.CreateInstance(Type.GetType(type));
project.ReadXml(reader);
reader.Read();
this.Profiles.Add(p2);
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何想法或建议!
当我尝试使用Json.NET将json反序列化为我的自定义类型时,我遇到了一个奇怪的问题:
public class Shot
{
[JsonProperty("frames")]
public ObservableCollection<Frame> Frames
{
get { return Frames = _frames ?? new ObservableCollection<Frame>(); }
set { _frames = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
这产生了这个例外:
该API"System.Collections.ObjectModel.ObservableCollection
1[[AxisCtrl.Core.Model.Frame, AxisCtrl.Core.Logic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]..ctor(System.Collections.Generic.List1 [AxisCtrl.Core.Model.Frame])"不能在当前的平台上使用.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=248273.
当我尝试从Windows 8.1 Windows应用商店应用程序中将json反序列化为此类型时,但在我的单元测试环境中的"类库"类型项目中运行时,它正在工作:
提到的网址已经死了,正在重定向到主页面,因此没有多大帮助.奇怪的是,在我开始将项目和类拆分为不同的结构之前,这是有效的.但是我没有移动Shot类或更改它包含的项目类型.
Shot类在".NET Framework 4.5及更高版本","Windows应用商店应用程序(Windows 8)及更高版本"和"Windows Phone 8"的可移植类库类型项目中定义,主项目是Windows 8.1应用程序.
关于这里发生了什么的任何想法?