我的名称为<div title="your tooltip here">The content of the document......</div>
且类A
内的类具有许多其他用户定义的对象属性(A
,B
等)。对于使用类C
,我需要创建实例
A
这种情况在我的项目中多次发生,它使我的代码有些不整洁。
现在我需要一些代码(或现有的库,框架)来使用更少的代码来创建这种类的实例。
答案 0 :(得分:1)
好的,让我们使用Reflection
,我创建了一个BaseClass
,它看起来像,
public class Base {
public Base() {
Type type = this.GetType(); // gets current type
var props = type.GetProperties(); // get current type's properties
foreach (var item in props) // B and C
{
object instance = Activator.CreateInstance(item.PropertyType); // create instace of both B and C
item.SetValue(this, instance); // set B property to new value which we have created instance
}
}
}
我们的容器类A应该来自BaseClass
并且应该使用Base的构造函数,就像这样,
public class A : Base
{
public A() : base() {
}
public B _B { get; set; }
public C _C {get;set;}
}
执行此操作后,只需从A
创建实例并检查属性
希望有所帮助,
答案 1 :(得分:0)
那就是(构造函数,方法)重载是为了:)见下例:
public class ClassA {
public ClassA() {
// Do some generic initialization here
this.ClassB = new ClassB();
this.ClassC = new ClassC();
}
// Always call the base constructor using : this()
public ClassA(string name, int age) : this() {
this.Name = name;
this.Age = age;
}
// chain to another, 'simpler' constructor by doing : this(name, age)
public ClassA(string name, int age, ClassB classB) : this(name, age) {
this.ClassB = classB;
}
public ClassA(string name, int age, ClassB classV, ClassC classC) : this(name, age, classV) {
this.ClassC = classC;
}
public string Name { get; set; }
public int Age { get; set; }
public ClassB ClassB { get; set; }
public ClassC ClassC { get; set; }
}
public class ClassB {
public string School { get; set; }
public string Class { get; set; }
}
public class ClassC {
public string Area { get; set; }
public string Suburb { get; set; }
}
然后像这样调用它:
public SomeMethod() {
ClassA = new ClassA("John", 40, new ClassB(), new ClassC());
}
通过重载构造函数
,您可以更轻松地进行类型初始化