gpt4 book ai didi

C# 动态字段取决于 "T"类型,没有硬编码

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:24 25 4
gpt4 key购买 nike

所以我有一个函数。它接收一个名为“item”的未知类型的对象。在函数中,它声明了一个对象,并根据Type是什么,取决于对象从'item'的哪个字段获取值,例如:

private static void CreateObject<T>(T item)
{
SomeObject object = new SomeObject();

//if 'item' is type "A"
// object.Text = item.Display
//else if 'item' is type "B"
// object.Text = item.Text
//else if 'item' is type "C"
// object.Text = item.Value


}

请注意,传递 'item.display' 的字符串或任何一个都不是一个选项,因为在此函数中进行了很多操作,这是用于解释所需内容的函数的简化版本。

如何以更优雅的方式做到这一点?

我看过反射,但被告知要避免这种情况,因为它很昂贵(硬件、内存等)

最佳答案

采用将提供Text

的委托(delegate)参数
private static void CreateObject<T>(T item, Func<T, object> prop)
{
SomeObject obj = new SomeObject();

obj.Text = prop(item).ToString();
}

所以方法的调用者会使用

CreateObject(a, t => t.Display);
CreateObject(b, t => t.Text);
// etc

关于C# 动态字段取决于 "T"类型,没有硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781010/

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