这段代码可以更通用吗?

时间:2013-05-07 09:40:15

标签: asp.net generics

我正在c#/ Asp.Net 4.0中创建网站功能。

我有一个查询我的数据库并返回贷款提供者列表(“贷方”)的函数。

一旦我构建了我的列表,然后我遍历列表并为每个列表执行HttpPost。每个贷方都有非常具体和独特的数据要求,因此每个贷方都有一个类,它继承了一个接口。

MrLenderRequest : IPingtreeRequest

当我遍历列表时,我需要将数据映射到类。目前我以这种非常规的方式进行,从循环中调用此代码:

    IPingtreeRequest GetLenderRequest(string lender)
    {
        IPingtreeRequest lenderRequest = null;

        switch (lender)
        {
            case "MrLender":
                lenderRequest = new MrLenderRequest(_data);
                break;
            default:
                lender.ThrowCaseNotHandled();
                break;
        }

        return lenderRequest;
    }

如果您有4或5,这是可以的,但如果有50或更多,则没有。我想知道是否有更优雅/通用的方法来映射该类。

1 个答案:

答案 0 :(得分:2)

您可以使用Type.GetType,然后使用Activator来实例化对象。

string lender = "MrLender";
var lenderType = Type.GetType(lender + "Request"); // Include your namespaces
IPingtreeRequest lenderRequest = (IPingtreeRequest)Activator.CreateInstance(lenderType);