仙女不吃蛋黄 2024-08-15 11:00 采纳率: 53.6%
浏览 14
已结题

C#中模版应用的问题

需求:一个函数里面需要访问传入参数的字段,这个传入的函数不同的情况会传入不同的类型,试了模版,但是不可以访问传入参数得字段

  • 写回答

31条回答 默认 最新

  • 一直免费一直爽 2024-08-15 11:00
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在C#中,如果你想在一个函数中访问传入参数的字段,你可以使用泛型和反射来实现。以下是一个示例:

    using System;
    using System.Reflection;
    
    public class Program
    {
        public static void Main()
        {
            var obj1 = new MyClass1 { Field1 = "Hello" };
            var obj2 = new MyClass2 { Field2 = 42 };
    
            PrintField(obj1); // 输出: Hello
            PrintField(obj2); // 输出: 42
        }
    
        public static void PrintField<T>(T obj)
        {
            Type type = typeof(T);
            PropertyInfo[] properties = type.GetProperties();
    
            foreach (PropertyInfo property in properties)
            {
                Console.WriteLine(property.GetValue(obj, null));
            }
        }
    }
    
    public class MyClass1
    {
        public string Field1 { get; set; }
    }
    
    public class MyClass2
    {
        public int Field2 { get; set; }
    }
    

    在这个示例中,我们定义了一个泛型方法PrintField<T>,它接受一个类型为T的对象作为参数。然后,我们使用反射来获取对象的类型,并遍历其属性,打印每个属性的值。这样,我们可以处理不同类型的对象,而不需要知道它们的具体类型。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数