У меня есть набор классов, которые наследуются от одного и того же базового класса, и мне нужно создать фабричный метод для создания экземпляров различных реализаций базового класса на основе атрибута GuidAttribute, прикрепленного к классу реализации. Так что в основном сценарий выглядит так:
abstract class Foo
{
/* ... */
public static Foo Create(Guid guid) {
Type type;
// Resolve the type ?
return Activator.CreateInstance(type) as Foo;
}
}
[Guid("<guid1>")]
class Bar : Foo { ... }
[Guid("<guid2>")]
class Baz : Foo { ... }
Есть ли другой способ, кроме итерации всех типов в загруженных сборках и кэширования результатов?