gpt4 book ai didi

c# - 动态返回模型的值

转载 作者:行者123 更新时间:2023-12-05 02:14:45 25 4
gpt4 key购买 nike

我有一个方法,它调用 API 并返回一个模型,如下所示:

public class Book
{
string Name { get; set; }
string Author { get; set; }
string Genre { get; set; }
}

这是一个示例函数,

public static string GetValue(object reference)
{
Book book = new Book();
book.Name = "A";
book.Author = "B";
book.Genre = "C";

return ?? // I have no idea
}

如果我调用 GetValue(Name),那么该方法应该返回 book.Name 值。如果我调用 GetValue(Genre),那么该方法应该返回 book.Genre

我该怎么做?

最佳答案

虽然这似乎是一个奇怪的用例,但您通常希望归还图书,然后直接访问图书的属性。如果您现在多次需要一个属性,您的方法将在您每次尝试使用此方法访问一个属性时调用 API。

所以直接的方法可能是这样的:

   public static R GetValue<R>(Func<Book, R> selector) {
Book book = new Book();
book.Name = "A";
book.Author = "B";
book.Genre = "C";

return selector(book);
}

然后您可以通过使用 lambda 函数来指示您想要的内容来获取本书的值:

var name = GetValue(b => b.Name);

然后您可以对此进行概括,以便能够在将其作为输入提供时返回任何值,方法是将其设为扩展方法:

public static R GetValue<T, R>(this T value, Func<T, R> selector) {
return selector(value);
}

然后创建一本新书,并像这样获取值:

var name = book.GetValue(b => b.Name);

但是,您现在所处的位置是执行此操作的更直接的方法:

var name = book.Name;

在这一点上,我们回到我最初的建议,只要从你得到它的地方得到整本书,然后直接访问它的属性。

关于c# - 动态返回模型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53097874/

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