我正在尝试将对象序列化为具有许多属性的XML,其中一些属性是只读的.
public Guid Id { get; private set; }
Run Code Online (Sandbox Code Playgroud)
我已经标记了类[Serializable],我已经实现了ISerializable接口.
下面是我用来序列化对象的代码.
public void SaveMyObject(MyObject obj)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
TextWriter tw = new StreamWriter(_location);
serializer.Serialize(tw, obj);
tw.Close();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它会在第一行显示此消息.
InvalidOperationException未处理:无法生成临时类(result = 1).错误CS0200:无法将属性或索引器"MyObject.Id"分配给 - 它是只读的
如果我将Id属性设置为public,则可以正常工作.有人可以告诉我,如果我正在做某事,或者至少是否可能吗?
是否有任何指导或最佳实践,Dispose()当他们被传递到另一个对象的方法或构造器时,谁应该调用一次性对象?
以下是我的意思的几个例子.
IDisposable对象被传递给一个方法(它应该在它完成后处理它吗?):
public void DoStuff(IDisposable disposableObj)
{
// Do something with disposableObj
CalculateSomething(disposableObj)
disposableObj.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
IDisposable对象被传递给一个方法并保留一个引用(它应该在处理时处置它MyClass吗?):
public class MyClass : IDisposable
{
private IDisposable _disposableObj = null;
public void DoStuff(IDisposable disposableObj)
{
_disposableObj = disposableObj;
}
public void Dispose()
{
_disposableObj.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
我目前认为在第一个例子中,呼叫者的DoStuff(),因为它可能创建的对象应该处理的对象.但是在第二个例子中,感觉MyClass应该处理对象,因为它保留了对象的引用.这个问题是调用类可能不知道MyClass已保留引用,因此可能决定在MyClass完成使用之前处置该对象.这种情况是否有任何标准规则?如果存在,当一次性对象传递给构造函数时它们是否不同?
这就是我想要做的:
UserControl是我希望被其他开发者消费的.我希望最终用户能够使用依赖属性来使用我的控件.
<lib:ControlView ControlsText={Binding Path=UsersOwnViewModelText} />
Run Code Online (Sandbox Code Playgroud)我正在使用MVVM模式.
我将我的ViewModels绑定到他们的View使用 <DataTemplates>
<DataTemplate DataType="{x:Type local:ControlViewModel}">
<local:ControlView />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)所以我有两个问题:
我是否认为如果在XAML中使用UserControl,那么UserControl必须将ViewModel设置为DataContext控件Loaded事件触发时的方式而不是使用<DataTemplate>方法?
如何允许用户将数据绑定到我的控件的依赖项属性,同时仍然是绑定到我的ViewModel的数据?
我有一个属性是数据库数据类型(char,datetime,int,float等...),我想更改用于输入所选类型值的控件.所以对于文本值我想要一个TextBox和我想要的日期值DatePicker.
我想到的一种方法是在我的表单上Visibility使用每个控件之一并使用适当的IValueConverter实现来设置它们.我知道这会起作用,但它会产生很多代码并且感觉不太好.
我想其他的方法是使用一个ContentPresenter,并将其与内容Style和DataTriggers,但我不能得到它的工作.
<Style x:Key="TypedValueHelper" TargetType="{x:Type ContentPresenter}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=DataType}" Value="Char">
<Setter Property="Content" Value="???"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=DataType}" Value="Date">
<Setter Property="Content" Value="???"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=DataType}" Value="Integer">
<Setter Property="Content" Value="???"/>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
如果有人可以填写我的"???" 或者提供更好的解决方案.
我正在尝试在VS2015 c#交互式窗口中运行一些代码,该窗口使用存储在我正在使用该#r函数引用的dll的app.config文件中的连接字符串.
如果我查看其中ConfigurationManager有一个连接字符串,但它是一个不同的,它必须从另一个配置文件引用.
我正在WPF中编写一个基于ListBox的用户控件.其中一个主要功能是通过拖动项目来重新排序列表.当用户拖动项目时,我将项目更改Opacity为50%,并ObservableCollection根据用户想要的位置在我的ViewModel中物理移动项目.在掉落事件中,我将Opacity回到100%.
我遇到的问题是,如果用户将项目拖离我的控件并将其丢弃到其他地方,那么我需要将其更改Opacity为100%并将项目移回用户开始拖动时的位置.是否有我可以处理的事件来捕获此操作?如果没有,有没有其他狡猾的方法来解决这个问题?
我有一个大型 .NET Framework 解决方案,并希望开始收集代码覆盖率数据作为我们构建管道的一部分(以及在我们的本地开发人员机器上)。
在 Coverlet GitHub 页面上,它说它支持 .NET Framework 项目,但所有示例都使用dotnet testCLI 命令。
是否可以为此使用 Coverlet 还是我应该查看 OpenCover 之类的东西?
我在Prism写一个应用程序.我有一个用户控件,包含两个<ContentControl>控件.这些都分配了区域.用户控件Window正在使用中显示ShowDialog().
我正在使用视图发现将我的一个视图添加到一个区域,另一个我想将视图注入其区域.视图发现工作正常.但是,当我尝试引用其他区域来注入视图时,我得到了异常:
KeyNotFoundException
区域管理器不包含MyRegion区域.
当我查看RegionManagers区域时,我正在尝试注入视图的那个或者正在使用视图发现的区域.
我和壳牌公司在不同的窗口是否重要?我以为只有一个RegionManager,但是我的视图发现必须有两个仍在工作......?或者是因为我在应用程序生命周期的后期创建了两个新区域?或者是因为新区域不在我的MainRegion内?
编辑:
在做了一些挖掘后,看起来像是创建了Region,但它找不到RegionManager的实例,所以它不会被添加.有线索吗?
我正在为客户端/服务器应用程序编写几个安装包.我正在使用Wix工具包,并且根据建议,每个DLL都被包装为具有唯一ID的自己的组件.
需要在两个包中安装一些常见的DLL.这些DLL是否应该具有相同的组件GUID,或者它们在每个包中是否应该不同?