【问题标题】:C# dynamically change property typeC#动态改变属性类型
【发布时间】:2016-02-15 04:09:32
【问题描述】:

我正在尝试动态更改我的代码中的属性类型,例如,在 Person 类下面如何将属性 name 类型从 bool 更改为 string?

public class Person
{     
    public bool name;    
}

【问题讨论】:

  • 你的意思是在运行时?
  • 无法完成。想不出为什么会有人这样做。
  • 你可以创建一个typegeneric类型,这样你就可以创建一个带有bool名称的Person和另一个带有字符串名称的Person。无论如何,可能你正在考虑复杂导致这个想法。
  • 这可能是X-Y problem。什么最初的问题导致了这个尝试的解决方案?
  • 好的,我正在寻找不同的解决方案,但我有这个疑问,所以我决定在这里发帖,感谢您的回答。无论如何,我正在使用 Entity 框架,Azure 中的 ASP.NET MVC,我的应用程序使用 n 数据库,所以我必须不断更改上下文以同步我的数据,2 个数据库使用相同的上下文定义(完全相同的表),但现在其中一个数据库中的一个表具有不同的属性,所以我试图从我的上下文中只更改一种属性类型,而不必创建另一个类或泛型类型。

标签: c# class types properties type-conversion


【解决方案1】:

如果您想在运行时执行此操作,您有不同的选择。其中一些:

1) 创建属性对象并在任何你使用它的地方检查类型:

public class Person
{     
    public object Name;    
}

2) 为 Person 创建一个泛型类型,允许您为不同类型定义类的不同实例:

public class Person<T>
{     
    public T Name;    
}

var boolPerson = new Person<bool>();
boolPerson.Name = true;
var stringPerson = new Person<string>();
stringPerson.Name = "aString";

但是您应该解释为什么要这样做,因为可能会有更好的解决方案。

【讨论】:

    【解决方案2】:

    看看this(您可以创建一个动态对象并在运行时更改该对象)。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2016-01-24
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多