【问题标题】:Custom class out of existing one [duplicate]现有的自定义类[重复]
【发布时间】:2019-06-26 23:50:41
【问题描述】:

我想知道是否有办法以这种方式从现有类中创建自定义类:

原始类:

public class Person
{
string name;
}

稍后在代码中:

var diffPerson = CreateDiffClass<Person>();
diffPerson.name.Value = "name";
diffPerson.name.Changed = false;

这个 diffPerson 不是 Person 类型,而是自定义创建的,对于 Person 中的每个变量本身都有一个,因此新变量是一个元组,其中 T 是变量的类型。

我希望它创建一个系统来比较同一类的 2 个实例。一个旧实例,一个新实例,保存新值,如果它改变了

除了在这个例子中显示之外,我真的不知道如何描述它,所以我希望它可以理解..

我希望这是通用的并且适用于任何给定的类

谢谢

【问题讨论】:

  • 这个例子没有任何意义。 later in code 中的代码甚至无法编译。 ValueChanged,他们都不是string 的成员。根据您的代码,它们甚至包含不同的值。你说的是类继承吗?也许你在谈论一个界面左右..?
  • 有点不清楚你要解决什么问题。为什么需要这个?
  • diffPerson 变量不是 Person 类型
  • 听起来您基本上是在说您希望能够比较相同类型的 2 个类,而不考虑实际的类,对吗?
  • 我想我明白你的要求。是的,这是可以做到的。不,它并不快。如果要查询和读/写未知类的所有公共属性,则需要查看“反射”类(System.Reflection)

标签: c#


【解决方案1】:

你可以像这样声明一个泛型类

public class CustomValue<T>
{
    public T Value { get; set; }

    public bool Changed { get; set; }
}

然后像这样使用它

public class Person
{
    public CustomValue<string> Name;
}

稍后在代码中

var diffPerson = new Person();

diffPerson.Name = new CustomValue<string>();
diffPerson.Name.Value = "name";
diffPerson.Name.Changed = false;

【讨论】:

  • 我想在代码中做到这一点,不是通过创建硬编码的新 Person 类型,而是通过一种方法为每个变量的每个类通用地做到这一点
猜你喜欢
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多