Я хочу сделать что-то вроде кода, указанного ниже.По сути, я хочу иметь возможность создавать объект, но в то же время необязательно ставить требование интерфейса
public UserControl CreateObject(string objectName, Type InterfaceRequirement)
{
///// create object code abbreviated here
UserControl NewControl = createcontrol(objectName);
if (InterfaceRequirement == null || NewControl is InterfaceRequirement)
return NewControl;
else
throw new SystemException("Requested object does not implement required interface");
}
Приведенный выше код не компилируется из-за проблем с InterfaceRequirement
сейчасЯ знаю, что могу сделать это с помощью обобщений:
public UserControl CreateObject<T>(string objectName)
{
///// create object code abbreviated here
UserControl NewControl = createcontrol(objectName);
if (NewControl is T)
return NewControl;
else
throw new SystemException("Requested object does not implement required interface");
}
, но с обобщениями требование к интерфейсу не является обязательным.Первый пример кода, где я передаю тип в качестве параметра, не компилируется, и я не вижу правильного синтаксиса.Кто-нибудь знает способ сделать это без генериков, чтобы я мог сделать его необязательным?