C#通用列表

blu*_*blu 3 c# generics

我有一个映射到数据库中的字段的类.该类仅关注字段的名称及其相关的.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>对两者都不起作用.

xia*_*ian 9

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)


Lar*_*lum 8

像这样定义你的类:

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)