我有一个映射到数据库中的字段的类.该类仅关注字段的名称及其相关的.NET类型. 类型可以是string,int,datetime等.
class Foo()
{
string Name { get; set; }
Type FooType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有另一个继承自Foo的类,它为值添加了一个属性.现在我将值存储为对象,并使用switch语句根据基类FooType对值进行装箱.
class FooWithStuff() : Foo
{
object Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用泛型实现这一点,为值赋予类型安全性?
编辑:我已将关键要求变为粗体.在声明列表时说Foo需要一个类型.如果我对自定义类这样做,我会创建和接口并使用它.但是在这里我使用的是int,string,DateTime等.Int是一个结构,字符串是一个对象,所以Foo <object>对两者都不起作用.
class Foo
{
public string Name { get; set; }
public Type Type { get; set; }
}
class Bar<T> : Foo
{
public T Value { get; set; }
public Bar()
{
base.Type = typeof( T );
}
}
Run Code Online (Sandbox Code Playgroud)
像这样定义你的类:
class Foo<T> : IFoo
{
public Foo(string name)
{
Name = name;
}
string Name { get; set; }
T Value {get; set;}
Type FooType { get { return typeof(T); } }
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将接口IFoo定义为:
string Name { get; set; }
Type FooType { get; set; }
Run Code Online (Sandbox Code Playgroud)
并将列表声明为:
List<IFoo> list = new List<IFoo>();
Run Code Online (Sandbox Code Playgroud)