Я использую веб-сервис, имеющий несколько методов (50), которые создают разные объекты.
Пример:
CreateObject1 (Object1 obj, int arg2)
CreateObject2 (Object2 obj, int arg2)
...
CreateObjectX (ObjectX obj, int arg2)
Все объекты (Object1, Object2, ObjectX ...) наследуются от ObjectBase.
Итак, я пытаюсь сделать это ...
delegate void DlgtCreateObject(ObjectBase obj, int arg2);
public void CreateObject(ObjectBase obj, int arg2)
{
DlgtCreateObject dlgt;
string objType;
string operation;
objType = obj.GetType().ToString();
operation = "Create" + objType.Substring(objType.LastIndexOf(".") + 1);
using (MyWebService service = new MyWebService())
{
dlgt = (DlgtCreateObject)Delegate.CreateDelegate(typeof(DlgtCreateObject),
service,
operation,
false,
true);
dlgt(obj, arg2);
}
}
К сожалению, это дает мне исключение Failed to Bind.
Я считаю, что это потому, что моя подпись делегата использует ObjectBase в качестве первого аргумента, где функции используют определенные классы.
Есть ли способ обойти это?