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

标签 c# .net autofixture

我们有一个引用 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/

相关文章:

C# 窗体,属性不起作用?

c# - 如何从 C# 调用设置 int 数组值的 C++ 函数?

.net - TeamCity 的重复项查找器中重复复杂性设置的度量单位是什么?

c# - 使用 Nunit、AutoFixture、NSubstitute 和 AutoSubstituteDataAttribute 定义测试数据的属性

c# - Autofixture 生成不重复的集合(按 ID)

c# - 多核处理器上的多个线程

c# - 以编程方式删除安全站点会破坏其他绑定(bind)

c# - 是否有一种简单的方法来创建 AutoFixture 自定义以限制枚举值?

c# - Windows 服务无法启动(错误 1053)

c# - 是否可以将一个表格放在另一个表格之上,而不是 TopMost?