c# - 创建参数类型的对象

标签 c# .net generics objectinstantiation

嘿。是否可以有一种方法,允许用户传入某种类型的参数,并让该方法实例化该类型的新对象?我想做这样的事情:(我不知道泛型是否可行,但试一试)

    public void LoadData<T>(T, string id, string value) where T : new()
    {

        this.Item.Add(new T() { ID=id, Val = value});

    }

上面的方法不起作用,但想法是用户传递他们想要实例化的对象类型,该方法将根据这些参数填写详细信息。 我可以只传递一个 Enum 参数并执行一个 Switch 并基于它创建新对象,但是有更好的方法吗? 谢谢

最佳答案

做到这一点的唯一方法是添加一个接口(interface),该接口(interface)还指定您要设置的参数:

public interface ISettable
{
    string ID { get; set; }
    string Val { get; set; }
}

public void LoadData<T>(string id, string value) where T : ISettable, new()
{
    this.Item.Add(new T { ID = id, Val = value });
}

很遗憾,我目前无法进行测试以验证。

关于c# - 创建参数类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824484/

相关文章:

java - Guava 的 Optional 类有什么意义

c# console writeline 在字符串之后

c# - 适用于 Windows 上 Mono 的良好 IDE

c# - 从 C# 加载注册表配置单元失败

c# - Web 服务无法打开命名管道 - 访问被拒绝

java - 使用子类异常实现接口(interface)

c# - Selenium 在浏览器后退按钮操作后使用旧页面并且不显示对 DOM 的更改

javascript - 我如何获取 html <tr> 对象内部的值

c# - 如何使用多个线程分段下载文件

java - java中的泛型方法不返回预期的类型