Как обернуть статический класс в нестатический объект-экземпляр (динамически)

У меня интересная проблема. Мне нужно динамически оборачивать статические классы. Т.е. вернуть нестатический экземпляр моим вызывающим абонентам. Например: [

public object CreateInstance(string className) {
  Type t = assembly.GetType(className);
  if (IsStatic(t)) {
    return CreateStaticWrapper(t);
  } else {
    return Activator.CreateInstance(t);
  }
}

] Мне нужны указатели на то, как реализовать CreateStaticWrapper .

Примечание: к сожалению, я не могу использовать динамические объекты.

Итак, каковы мои варианты?Я не очень хочу изучать поколение IL? Если генерация IL (Reflection.Emit, или есть другие способы сейчас?) - это путь, есть ли у кого-нибудь там указатели?

Edit: Важно отметить, что я могу вернуть словарь делегатов. Поэтому я мог бы использовать для этого Delegate.CreateDelegate , но я не могу понять, как обрабатывать перегруженные методы и универсальные методы.

Edit2: Другой вариант - вставить пустой конструктор в тип используя Emit, снова какие-то указатели? Возможно ли это даже для типа, отмеченного как статический? Входит ли ключевое слово static в IL?

Edit3: Для некоторого контекста я передаю это в среду javascript: мой проект . Поэтому я хотел бы иметь возможность (на JavaScript):

var fileHelper = .create('System.IO.File');
if (fileHelper.Exists(fileName)) { fileHelper.Delete(fileName); }

Всем спасибо.

12
задан onkar 24 December 2012 в 12:42
поделиться