从通用对象列表中读取通用值

我正在尝试遍历通用对象调用列表Condition<T>以读取通用字段Value。我跟着这个问题能够存储List<Condition<T>>. 我现在遇到的问题是我无法Value在循环中使用该字段。我需要更改什么才能使用该Value字段?


主要的

string url = "";

List<ConditionBase> Conditions = new List<ConditionBase>();

Conditions.Add(new Condition<int>(Field.Field1, 1, ConditionOperator.Equal))

Conditions.Add(new Condition<string>(Field.Field2, "test", ConditionOperator.NotEqual))


foreach (ConditionBase c in Conditions)

{

    if (c.GetType() == typeof(string))

    {

        // c.Value throws an error

        url += c.Field + " " + c.ConditionOperator + " '" + c.Value + "' and ";

    }

    else if (c.GetType() == typeof(DateTime))

    {

        // c.Value throws an error

        url += c.Field + " " + c.ConditionOperator + " " + Helpers.FormatDate(c.Value) + " and ";

    }

}

条件基础

public interface ConditionBase

{

    Field Field { get; set; }

    ConditionOperator ConditionOperator { get; set; }

}

状况

public class Condition<T> : ConditionBase

{

    private Field _Field;

    private T _Value;

    private ConditionOperator _ConditionOperator;


    public Condition(Field field, T value, ConditionOperator condition)

    {

        this._Field = field;

        this._Value = value;

        this._ConditionOperator = condition;

    }


    public Field Field

    {

        get

        {

            return this._Field;

        }

        set

        {

            if (this._Field != value)

            {

                this._Field = value;

            }

        }

    }


    public T Value

    {

        get

        {

            return this._Value;

        }

        set

        {

            if (!EqualityComparer<T>.Default.Equals(this._Value, value))

            {

                this._Value = value;

            }

        }

    }


    public ConditionOperator ConditionOperator

    {

        get

        {

            return this._ConditionOperator;

        }

        set

        {

            if (this._ConditionOperator != value)

            {

                this._ConditionOperator = value;

            }

        }

    }

}



catspeake
浏览 135回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP