我使用.NET 3.5SP1和DataContractSerializer来序列化一个类.在SP1中,他们更改了行为,因此您不必在类中包含DataContract/DataMember属性,它只会序列化整个事物.这是我正在使用的行为,但现在我需要忽略序列化程序中的一个属性.我知道一种方法是将DataContract属性添加到类中,并将DataMember属性放在我想要包含的所有成员上.不过,我有理由认为这对我不起作用.
所以我的问题是,是否有一个属性或者我可以使用什么来使DataContractSerializer忽略属性?
任何想法如何解决这一问题?
UserService.UserServiceClient userServiceClient = new UserServiceClient();
userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted);
userServiceClient.GetUsersAsync(searchString);
Run Code Online (Sandbox Code Playgroud)
.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_UserService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:52185/UserService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_UserService"
contract="UserService.UserService"
name="BasicHttpBinding_UserService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="Shell.Silverlight.Web.Service3Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior"
name="Shell.Silverlight.Web.Service3">
<endpoint address=""
binding="basicHttpBinding"
contract="Shell.Silverlight.Web.Service3" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
无法在ServiceModel客户端配置部分中找到引用合同"UserService.UserService"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.
解决!
我没有提到这是一个Silverlight应用程序.我在DLL中有wcf引用,它有自己的"ServiceReferences.ClientConfig"文件.我将DLL的ServiceReferences.ClientConfig的内容移动到主Silverlight项目并且它工作了.
我使用Microsoft的Unity进行依赖注入,我想做这样的事情:
IDataContext context = _unityContainer.Resolve<IDataContext>();
var repositoryA = _unityContainer.Resolve<IRepositoryA>(context); //Same instance of context
var repositoryB = _unityContainer.Resolve<IRepositoryB>(context); //Same instance of context
IDataContext context2 = _unityContainer.Resolve<IDataContext>(); //New instance
var repositoryA2 = _unityContainer.Resolve<IRepositoryA>(context2);
Run Code Online (Sandbox Code Playgroud)
RepositoryA并且RepositoryB都有一个带IDataContext参数的构造函数,我希望Unity使用我传递它的上下文初始化存储库.另请注意,IDataContext未在Unity中注册(我不想要3个实例IDataContext).
.net c# dependency-injection unity-container constructor-injection
对调用多个方法的方法进行单元测试的最佳方法是什么,例如:
modify(string value)
{
if(value.Length > 5) replaceit(value);
else changeit(value);
}
Run Code Online (Sandbox Code Playgroud)
这个伪代码有一个修改方法(当前)调用replaceit()或changeit().我已经为replaceit和changeit编写了测试,因此编写一个新的修改测试将是同一组代码的99%.我需要对它进行测试,因为它可能会在未来发生变化.
那么我是否复制粘贴现有的测试代码?将测试代码移动到一个通用功能?还有其他想法吗?我不确定这里的最佳做法.
如何在linq中选择实体来从列表中选择带有键的行?像这样的东西:
var orderKeys = new int[] { 1, 12, 306, 284, 50047};
var orders = (from order in context.Orders
where (order.Key in orderKeys)
select order).ToList();
Assert.AreEqual(orderKeys.Count, orders.Count);
Run Code Online (Sandbox Code Playgroud)
我尝试使用一些答案中提到的Contains方法但它不起作用并抛出此异常:
LINQ to Entities无法识别方法'Boolean Contains [Int32](System.Collections.Generic.IEnumerable`1 [System.Int32],Int32)'方法,并且此方法无法转换为商店表达式.
LINQ Count()方法是否比List<>.Count或更快或更慢Array.Length?
我是否可以在反序列化时使XmlSerializer忽略名称空间(xmlns属性),以便无论是否添加属性,或者即使属性是伪造的也无关紧要?我知道源始终是可信的,所以我不关心xmlns属性.
c# ×9
.net ×7
linq ×2
wcf ×2
cryptography ×1
currency ×1
encryption ×1
mono ×1
testing ×1
unit-testing ×1