gpt4 book ai didi

c# - 如何定义类型为 T 的类属性

转载 作者:太空狗 更新时间:2023-10-29 17:31:43 25 4
gpt4 key购买 nike

我怎样才能拥有一个可以接受任何类型(类)对象的属性...像这样?

public class HttpConnectorRequest
{
public int Id { get; set; }
public T RequestObject { get; set; } where T: class
public string ResponseData { get; set; }
public Exception Exception { get; set; }
}

我正试图为这样的事情找到一个替代方案:

public class HttpConnectorRequest
{
public int Id { get; set; }
public ClassA ClassARequestObject { get; set; }
public ClassB ClassBRequestObject { get; set; }
public ClassC ClassCRequestObject { get; set; }
public string ResponseData { get; set; }
public Exception Exception { get; set; }
}

最佳答案

没关系 - 你只需要把它变成通用的:

public class HttpConnectorRequest<T> where T: class
{
public int Id { get; set; }
public T RequestObject { get; set; }
public string ResponseData { get; set; }
public Exception Exception { get; set; }
}

然后你会写这样的东西:

var request = new HttpConnectorRequest<string>();
request.RequestObject = "Hello!";

泛型是一个大话题 - MSDN可能是一个合理的起点,尽管我怀疑您会想在某个时候在教程或书籍中阅读它。 (虽然我自己的书 C# in Depth 显然涵盖了泛型,但很多其他书也涵盖了泛型:)

请注意,这会使整个类型 通用。如果您只想制作一个属性 通用的,那您就不走运了……尽管您可以制作一个方法 通用的:

public class HttpConnectorRequest
{
// Other members elided

public void SetRequestObject<T>(T value) where T : class
{
...
}

public T GetRequestObject<T>() where T : class
{
...
}
}

这完全取决于你 - 请记住有人可以写:

var request = new HttpConnectorRequest();
request.SetRequestObject<string>("Hello");
var button = request.GetRequestObject<Button>();

关于c# - 如何定义类型为 T 的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862156/

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