使用未知接口创建对象

时间:2011-12-21 04:31:17

标签: c# generics interface

我有一个名为Location的课程,可以是Location<IClub>Location<IRestaurant>

我从数据库中获取记录,然后该记录指定此位置是餐馆还是俱乐部。

我需要根据记录中的字符串值创建位置。

我试过这样做;

        object topLoc = null ;

        if (record.type == "club")
            topLoc = new Location<IClub>();

但我无法访问任何Location的属性。

我也无法在if语句中创建对象,因为当你离开时,如果对象超出范围。

1 个答案:

答案 0 :(得分:2)

听起来仿制药不是您需要的工具。请考虑使用enum

,而不是使用泛型来注释位置类型
public enum LocationKind
{
    Restaurant,
    Club
}

Location location = new Location(LocationKind.Club);
// set up & use location as you see fit; expose the LocationKind through a
// property or something else along those lines