我正在开发一个类,它创建一个为类指定的类的实例(使用Activator.CreateInstance
)(作为类型参数或作为构造函数的参数),所以当类创建一个实例时,创建类的实例是毫无意义的,因此使用泛型传递类型是有道理的。例如。在一个类和一个通用类之间共享代码
var foo = new Foo<Bar>();
但是,这使得该类不可能在运行时使用,因为类型参数是在编译时声明的。
要在运行时使用它,构造函数需要将该参数作为参数。例如。
var foo = new Foo(new Bar());
的代码中的类,其余都是一样的,所以如果这是两个不同的类,然后会有很多重复的代码。
问题:
- 如何共享代码和避免重复的代码?
- 可以(而且应该)这是同一类的两个构造函数吗?
- 我采取了错误的方法?也许
new Foo(typeof(Bar))
?
请解释这背后的目的是什么..目前它还不清楚/太宽..我假设为“共享代码” - 组合/继承。两个构造函数 - 是的,可能的。 'typeof(Bar)' - 这是别的 - 取决于你想做什么 –
我很好奇你的实现是什么样的。从这个问题来看,这听起来更像是继承的候选人而非泛型。或者如果'Foo'依赖于'Bar',那么共同的属性/方法可以调用另一个并避免重复。 – Theo
*我正在开发一个类,该类创建一个为该类指定的类的实例(作为类型参数或作为构造函数的参数),因此在类时创建类的实例是毫无意义的无论如何创建一个实例,因此传递类型使用泛型是有道理的。* ...嗯? –