Мы обновились с .NET 3.5 до .NET 4.0, и теперь System.Refelection.Assembly.CreateInstance, похоже, не работает. У кого-нибудь еще возникла такая проблема? Есть ли способ это исправить? Ниже приведен пример того, как мы загружаем сборку. Возвращает нулевое значение. Не исключение Это сборка .NET, зарегистрированная в GAC. Это не COM-объект.
Assembly assembly = Assembly.LoadWithPartialName("AssemblyName");
object instance = assembly.CreateInstance("Namespace.Class",
false,
BindingFlags.CreateInstance,
null,
null, null, null);
Я сузил причину проблемы. Мой класс A, который я пытаюсь создать, наследуется от класса B. Класс B определен как открытый абстрактный класс B. Класс B содержит большую часть логики с одним абстрактным методом, который определяет класс A. Точно так же у меня есть другой класс C, который наследуется от класса B, который имеет другое определение для метода. В основном рефакторинг, чтобы поделиться общей логикой. Это работало в .NET 3.5, но в .NET 4.0 я наконец сузил исключение до "{" Невозможно создать абстрактный класс. "}".
public abstract class A
{
public string InvokeUI()
{
//some logic
DisplayUI();
}
protected abstract void DisplayUI();
}
public class B : A
{
protected override DisplayUI()
{
Some logic;
}
}