Я хочу управлять созданием группы классов, которые все имеют общий интерфейс и все нуждаются в некоторой логике в построении. Кроме того, я не хочу, чтобы какой-либо другой код, кроме фабрики классов, мог создавать объекты из этих классов.
Мои основные препятствия:
(1) для универсального метода, чтобы иметь возможность создавать экземпляры классы, в которых мне нужно ограничение new (), что означает, что у меня должен быть общедоступный конструктор классов, что означает, что они могут быть созданы публично.
(2) Альтернативой для самих классов может быть статический метод, который возвращает экземпляр класса. Но я не могу вызвать это из своего универсального класса, потому что мне нужно иметь дело с терминами интерфейсов / типов, и у вас не может быть статики через интерфейсы.
Вот что у меня сейчас есть, но оно использует ограничение new (), которое позволяет публично создавать мои классы:
internal static class MyClassFactory
{
internal static T Create<T>(string args) where T : IMyType, new()
{
IMyType newThing = new T();
newThing.Initialise(string args);
return (T)newThing;
}
}
public interface IMyType
{
void Initialise(string args);
}
public class ThingA: IMyType
{
public void Initialise(string args)
{
// do something with args
}
}
Любая помощь очень ценится :)