我们正在使用提供api的服务引用来访问具有特定类型的某些函数,因为这些服务引用不再可用,我们正计划使用类似的类来使代码工作
服务参考提供了以下服务类型
SearchService→SearchResponse→字段
我感觉是嵌套类正在尝试构建类似的类。
public class SearchResponse_t
{
public string FieldName { get; set; }
public string FieldValue { get; set; }
}
public class SearchResult_t
{
public SearchResponse_t SearchResponse { get; set; }
}
我是C#的新手
我希望当我创建SearchResult_t
的新实例时,SearchResponse_t
上也会发生同样的事情,但是似乎没有发生。
答案 0 :(得分:2)
实例化一个类时,其成员(您未指定默认值)被初始化为default(T)
,其中T
是所讨论的类型。
default(T)
始终为null。类是引用类型。default(T)
将提供其默认值。对于数字类型,这是0
,等等。因此,要解决您的特定问题:构建SearchResponse
后,我希望null
是SearchResult_t
。如果您希望它包含SearchResponse_t
的新实例,则可以指示它默认执行以下操作:
public class SearchResult_t
{
public SearchResponse_t SearchResponse { get; set; } = new SearchResponse_t();
}
或者您可以添加一个构造函数并在那里进行初始化:
public class SearchResult_t
{
public SearchResponse_t SearchResponse { get; set; }
public SearchResult_t()
{
this.SearchResponse = new SearchResponse_t();
}
}
或者,您可以在实例化类之后执行此操作:
SearchResult_t result = new SearchResult_t();
result.SearchResponse = new SearchResponse_t();
要满足您对SearchResponse
也将使用新实例进行填充的期望,请考虑以下示例:
public class Node<T>
{
public Node<T> Previous { get; set; }
public Node<T> Next { get; set; }
public T Item { get; set; }
}
在此示例中,Node<T>
将自身引用为Previous
和Next
值。如果.NET也要实例化它们,则将有一个无限循环。我想,这不是事情如此工作的唯一原因,但这是为什么事情行不通的一个很好的例子。
答案 1 :(得分:0)
我相信这就是您想要的。
public class SearchResult_t
{
private SearchResponse_t _searchResponse = new SearchResponse_t();
public SearchResponse_t SearchResponse
{
get { return this._searchResponse; }
set { this._searchResponse = value; }
}
}