我有一个像这样的基类:
public class Base{
private string name = string.Empty();
public Base(string name){
this.name = name;
}
public string Name{get;set;}
}
我有一个继承自Base
类的泛型类,还包含一个返回泛型类型T
的对象的方法,如下所示:
public SubClass<T>:Base{
public SubClass(string name):base(name){}
public T method(string parameter){
//do some stuff here and return T
return T;
}
}
我实例化SubClass
的对象:
object instance = new SubClass<object>("name");
我并没有在构造函数中使用泛型类型。 SubClass
构造函数中的参数是预定义类型(例如string,int等)。这个实现工作正常,但我想知道这是否正确?是否有另一种更合适的方法来做到这一点。感谢名单
修改
背景:
Base
类是一个处理与CouchDB连接的类。所以我提供了必要的信息(用户名,通行证,主机,端口和数据库名称),SubClass
是CouchDB的简单客户端。因此,当我创建SubClass
的对象时,我想提供CouchDB的凭据,我也希望提供我期望从数据库中获得的模型(例如,帐户模型,产品模型)。
答案 0 :(得分:0)
我有点困惑地看着你的代码。为什么要将System.Object
的实例存储在对象中?这样你就无法调用你班级的任何成员(除了那些从public interface IModel
{
Foo GetFoo();
}
public class AccountModel : IModel
{
public Foo GetFoo()
{
// whatever
}
}
public class ProductModel : IModel
{
public Foo GetFoo()
{
// whatever
}
}
继承的成员)。
我也希望提供模型(例如帐户模型,产品型号) 我希望从数据库
我假设这些不同类型的模型实现了一个通用接口,所以结构看起来像这样:
SubClass
由于我们知道IModel
的类型参数是T
,因此在public class SubClass<T> : Base where T : IModel
{
public SubClass(string name) : base(name){}
public T Method(string parameter)
{
//do some stuff here and return T
return T;
}
}
上放置类型约束是个好主意:
SubClass<ProductModel> pm = new SubClass<ProductModel>("blurg");
IModel model = pm.Method();
Foo foo = model.GetFoo();
我会像这样使用它:
pandas