通过Web API反编译泛型?

时间:2014-10-29 21:58:09

标签: json generics asp.net-web-api

我有一个像这样的对象:

public class Criteria
{
    public List<Param> Parameters { get; set; }
}

对于Param,我有以下内容:

public abstract class Param {}

public class Param<T> : Param
{
    public string Name { get; private set; }

    public T SelectedValue { get; set; }

    public QueryParameter(string name)
    {
        this.Name = name;
    }
}

这样,当我想创建一个Criteria包时,我会做出类似的东西:

Criteria newPackage = new Criteria();
Param param1 = new Param<string>("City");
Param param2 = new Param<int>("Population");
newPackage.Parameters.add(param1);
newPackage.Parameters.add(param2);

这个想法是消费者获得这个Criteria包,并且这样做:

receivedPackage.Parameters[0].SelectedValue = "New York";
receivedPackage.Parameters[1].SelectedValue = 15820582;

SendBackToWebAPI(receivedPackage);

但是,当通过Web API传递时,不会维护类型。所以我收到这样的消息:

Could not create an instance of type Param. Type is an interface or abstract class and cannot be instantiated.

我觉得这不可修复,但也许有另一种方法可以完成我正在做的事情?

为了更加清晰:这里的目标是消费者不知道标准是什么。他们想知道一些事情,但要获得这些信息,需要特定的标准。所以我通过了他们必须填写的一套标准,然后他们填写并发送回来。然后我使用这些条件参数来填充我的查询,然后像往常一样传回普通对象。

0 个答案:

没有答案