在我看来web method,我得到了一些第三方C#实体类的对象.实体类只不过是DataContract.这个实体类非常复杂,具有各种类型的属性,一些属性也是集合.当然,这些链接类型也是DataContracts.
我想将该DataContract实体序列化为XML,作为我的Web服务的业务逻辑的一部分.我不能DataContractSerializer直接使用(在我在web方法中收到的对象),因为XML模式完全不同. 因此,DataContractSerializer生成的XML不会针对模式进行验证.
我无法总结出我应该遵循的方法来实施.我可以想到以下实施方法:
LINQ to XML - 这看起来不错,但我需要为每种类型的对象手动创建XML树(即类实例的元素或XML表示).由于有许多实体类并且它们彼此链接,我认为手动编写XML元素太多了.此外,当实体类引入一些新属性时,我将不得不继续修改XML树.不仅如此,我生成XML树的代码看起来有点笨拙(至少在外观上)并且将来很难被其他开发人员维护/更改; 他/她将不得不仔细研究它以了解如何生成XML.
XmlSerializer - 我可以编写自己的实体类来表示我想要的XML结构.现在,我需要将传入对象的详细信息复制到我自己的类的对象中.所以这是额外的工作(对于.NET,当代码执行时也是如此!).然后我可以XmlSerializer在我的对象上使用生成XML.在这种情况下,我将不得不创建实体类,每当第三方实体被修改时,我只需要在我的类中添加新属性.(使用XmlElement或XmlAttibute属性).但人们推荐DataContractSerializer这个,所以我不想最终确定这个,除非我清楚所有方面.
DataContractSerializer - 再次在这里,我将不得不编写自己的实体类,因为我无法控制第三方DataContracts.我需要将传入对象的细节复制到我自己的类的对象中.所以这是额外的工作.但是,由于DataContractSerializer不支持Xml属性,因此我必须IXmlSerializable在WriteXml方法中实现并生成所需的Xml .DataContractSerializer比XmlSerializer更快,但如果第三方实体发生变化,我将不得不处理更改(在WriteXml中).
问题:
DataContractSerializer值得考虑(因为它具有更好的性能XmlSerilaizer)?serialization xml-serialization .net-4.0 linq-to-xml datacontractserializer
我有3个类库项目.让我们称他们为A,B和C.我已将project referenceA和B 添加到项目C中.
A&B正在建设中,没有任何错误或警告.
项目C中的代码(类文件)使用A和B中的公共类.当我在C中添加项目引用并查看C项目中的类文件(在构建项目C之前)时,我可以清楚地看到所有类和来自A和B的名称空间已解析.当我将鼠标悬停在类名(A或B中的类)上时,它也会显示它的正确名称空间.
我已经在项目引用上设置了Copy Local属性True.
然而,
bin\debug项目C 的文件夹中.为什么不复制引用?(我已经看到了关于这个问题的几个问题,但没有提供给他们的解决方案对我有用).net assemblies project-reference visual-studio-2010 visual-studio
我有一组元素/键,我正在从两个不同的配置文件中读取.因此,键可以是相同的,但具有与它们中的每一个相关联的不同值.
我想按排序顺序列出它们.我能做什么 ?我尝试了SortedList类,但它不允许重复键.
我该怎么做?
例如,假设我有3个元素,键1,2,3.然后我得到一个具有键2(但值不同)的元素.然后我希望新密钥在现有密钥2之后但在3之前插入.如果我在找到一个带有密钥2的元素,那么它应该在最近添加的密钥2之后.
请注意,我使用的是.NET 2.0
是不是可以让异常冒泡到堆栈顶部而不是在每个方法中捕获它?我们应该在任何情况下都这样做吗?.. 这种方法是否存在任何微妙的问题或副作用(例如,丢失异常细节,堆栈跟踪或内部异常细节等)?
虽然我的问题很笼统,但我目前的情况如下:
我正在将现有的WSE3 Web服务移动到WCF,因此y客户端是WSE3客户端.
我添加了一个行为,以便FaultException在WCF服务中发生时将通知客户端.当方法中有异常时OperationContract,我在客户端获得异常消息没有任何问题.但是每当它出现在OperationContracts 以外的方法中时,我都会以某种方式得到与安全相关的问题.我无法确定确切的原因.
但是,作为一种解决方法,我想OperationContract只从异常中抛出异常并让异常冒泡到OperationContract.
之前我已将本地文件夹映射到TFS.由于某种原因,我不得不更换机器/电脑.所以我将所有文件夹复制到新机器上.
现在,当我尝试将TFS文件夹映射到新计算机上的现有文件夹时,它始终显示Not Downloaded在(VS 2010)的Latest列下Source Control Explorer.我可以获得最新版本,但这非常耗时.
有人可以建议一种方法在较短的时间内建立现有文件夹和TFS文件夹之间的关系吗?
我知道当我尝试创建新的时MessageQueue,InvalidOperationException如果未启用消息队列,系统将抛出.
但是如何以编程方式知道机器上是否启用了消息队列?我在两个不同的代码库中使用C#2.0和C#4.0.
我的winform应用程序与Web服务通信.对于某些要求,我需要在winform应用程序中以XML格式显示Web服务响应.
我可以将响应类型(类)实例序列化为XML字符串.但是当我在富文本框中显示该字符串时,它显然显示为连续字符串; 而不是如下所示的XML.
<UserServiceAccesses>
- <UserServiceAccess>
- <Service>
<ID>0</ID>
<LocalID>Loggerr</LocalID>
<SystemID>-1</SystemID>
<ServiceType>U</ServiceType>
<Name>MyLogger</Name>
</Service>
<ClientPermissions />
</UserServiceAccess>
- <UserServiceAccess>
- <Service>
<ID>0</ID>
<LocalID>Logger2</LocalID>
<SystemID>-1</SystemID>
<ServiceType>U</ServiceType>
<Name>MyLogger2</Name>
</Service>
<ClientPermissions />
</UserServiceAccess>
<UserServiceAccesses>
Run Code Online (Sandbox Code Playgroud)
这里UserServiceAccesses是具有类型属性的类UserServiceAccess.然后UserServiceAccess有一个类型的属性Service,ClientPermissions
我该怎么做?它可以是任何形式(树,表,文本等),但它应该是XML可读的.由于我们从应用程序调用了很多Web方法,因此每次XML结构都会有所不同,因此我们无法确定模式.
我有一个WPF window作为模态对话框打开.
在对话框中,我有OK&Cancel按钮,其属性分别设置为IsDefault&.这两个按钮都有关闭对话框的事件处理程序.IsCancelTrueClick
这是相关的XAML:
<StackPanel Orientation="Horizontal" Grid.Row="1" Height="45" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="190">
<Button Content="OK"
Height="25" Margin="10,10,10,10" Width="75" Name="btnOK" TabIndex="1600" IsDefault="True" Click="btnOK_Click"
VerticalContentAlignment="Center" HorizontalContentAlignment="Center" />
<Button Content="Cancel"
Height="25" Margin="10,10,10,10" Width="75" Name="btnCancel" TabIndex="1700" IsCancel="True"
VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="btnCancel_Click" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这是后面的代码:
private void btnOK_Click(object sender, RoutedEventArgs e)
{
// My some business logic is here
this.Close();
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
当我按下Esc键盘上的Cancel按钮时(即使焦点不在按钮上),对话框也会按预期关闭.但是,当按下按钮时按下Enter按键时OK …
我正在编写FTP客户端,至少应该适用于Windows和Linux FTP.在我继续之前,我想回答这些问题.
ls -lt命令用于Linux上的FTP服务器时,列出了哪些文件?ls -lt命令用于Windows上的FTP服务器时,列出了哪些文件?注意:我尝试在Windows和Linux FTP服务器上执行命令,但我无法找出任何特定的逻辑/格式.
我有一个具有该类型属性的类SqlConnection.SqlConnection实施IDisposable.我有以下问题:
IDisposable,因为它具有类型的属性IDisposable?如果是,我在处理类的实例时是否需要显式处理属性?例如
public class Helper : IDisposable
{
// Assume that it's ANY OTHER IDisposable type. SqlConnection is just an example.
public SqlConnection SqlConnection { get; set; }
public void Dispose()
{
if (SqlConnection!= null)
{
SqlConnection.Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)注意:我知道在实施时需要遵循一种模式,IDisposable但我的问题非常具体到上述情况.
c# ×6
.net ×5
.net-2.0 ×1
.net-4.0 ×1
assemblies ×1
ftp ×1
ftp-client ×1
ftp-server ×1
generic-list ×1
idisposable ×1
linq-to-xml ×1
linux ×1
msmq ×1
tfs2010 ×1
tfvc ×1
wcf ×1
winforms ×1
workspace ×1
wpf ×1
wpf-controls ×1
wpfdatagrid ×1
xaml ×1