gpt4 book ai didi

c# - 通用方法设置基类属性的值

转载 作者:行者123 更新时间:2023-12-01 21:27:48 25 4
gpt4 key购买 nike

我正在编写一个通用方法来将设置值放在基类上

public class StageOne: DefaultValues
{
//StageOne properties
}

public class DefaultValues
{
public string status { get; set; }
public string message { get; set; }
}

private T SetValue<T>() where T : DefaultValues
{
T.message = "Good Job";
T.status = "Done";
return default(T);
}

我在 T.messageT.status 上收到错误; T 是类型参数,在给定上下文中无效

我已经用 Google 搜索过,但找不到答案 - 请帮忙。

谢谢。

最佳答案

如果要设置泛型类型的属性,则需要该类型的实例。要获取一个实例,我们需要让调用者将一个实例作为参数传入,或者创建一个新实例(如果我们选择此选项,我们还需要包含 new() 约束) :

第一个选项 - 让调用者传入该类型的实例(在这种情况下不需要返回值,因为调用者已经拥有对我们正在更改的实例的引用):

private void SetValue<T>(T input) where T : DefaultValues
{
input.message = "Good Job";
input.status = "Done";
}

第二个选项 - 在方法内创建该类型的新实例(请注意添加的通用约束 new()):

private T SetValue<T>() where T : DefaultValues, new()
{
T result = new T();
result.message = "Good Job";
result.status = "Done";
return result;
}

可以简化为:

private static T SetValue<T>() where T : DefaultValues, new()
{
return new T {message = "Good Job", status = "Done"};
}

关于c# - 通用方法设置基类属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186952/

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