gpt4 book ai didi

c# - Ploeh AutoFixture 无法从 System.Runtime.Serialization.ExtensionDataObject 创建实例

转载 作者:IT王子 更新时间:2023-10-29 04:29:21 25 4
gpt4 key购买 nike

我们有一个引用 WCF 服务的 MVC 项目。这些引用将 (ExtensionDataObject)ExtensionData 属性添加到每个 DTO 和 Response 对象,现在 AutoFixture 无法创建这些类型的匿名实例。

例子:

public partial class SearchResultsDto : object, 
System.Runtime.Serialization.IExtensibleDataObject,
System.ComponentModel.INotifyPropertyChanged {

[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

[global::System.ComponentModel.BrowsableAttribute(false)]
public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
get {
return this.extensionDataField;
}
set {
this.extensionDataField = value;
}
}
}

代码:

_fixture = new Fixture().Customize(new AutoMoqCustomization());
var dto = _fixture.CreateAnonymous<SearchResultsDto>();

异常(exception):

Ploeh.AutoFixture.ObjectCreationException: Ploeh.AutoFixture.ObjectCreationException: AutoFixture was unable to create an instance from System.Runtime.Serialization.ExtensionDataObject, most likely because it has no public constructor, is an abstract or non-public type..

问题:有没有办法在 AutoFixture 中注册这个对象,以便将其实例化为 null 或其他任何东西,这样我就可以对所有对象执行 CreateAnonymous具有 ExtensionData 属性的对象。

最佳答案

最简单的方法是:

fixture.Register<ExtensionDataObject>(() => null);

用给定的 Func 向 AutoFixture 注册一个初始化所有 ExtensionDataObject 的特定方法。在这种情况下,Func 总是返回 null,所以您可以开始了。

关于c# - Ploeh AutoFixture 无法从 System.Runtime.Serialization.ExtensionDataObject 创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15478897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com