我有一个具有以下结构的数据合同Foo。
[DataContract]
public sealed class Foo
{
[DataMember]
public String Type
{
get;
internal set;
}
}
出于测试目的,我想创建一个具有特定类型的Foo实例,但是在创建实例后我无法设置Type属性,因为它是一个内部属性。我怎样才能做到这一点?
一个想法是创建对象的序列化版本,然后使用反序列化器来创建对象的实例,这是可能的,如果是,我该怎么办呢?
答案 0 :(得分:1)
使用产品装配中的System.Runtime.CompilerServices.InternalVisibleTo
属性标记测试装配可见的内部结构。
在AssemblyInfo.cs
文件中:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("YourTestAssembly.dll, PublicKey=123456")]
答案 1 :(得分:0)
在班上有2个构造函数:
public Foo ();
public Foo (string type) {
Type = type;
}
使用第二个构造函数进行测试。