Я пытаюсь написать универсальный класс, передать ему некоторые типы и затем получить к нему доступ через свойства.
Я написал этот код:
class Factory<T1, T2> where T1 : Test, new()
where T2 : Test, new()
{
public T1 FirstType { get; set; }
public T2 SecondType { get; set; }
public Factory()
{
FirstType = new T1();
SecondType = new T2();
}
}
и я использую его следующим образом (OtherTest реализует Test):
Factory<Test, OtherTest> factory = new Factory<Test, OtherTest>();
factory.FirstType.MyMethod();
Тогда я могу использовать свойства FirstType и SecondType, однако, если я изменю порядок:
Factory<OtherTest, Test> factory2 = new Factory<OtherTest, Test>();
Это будет иметь другое поведение, поскольку FirstType будет OtherTest. Я хотел бы передавать экземпляры и иметь возможность писать код, подобный этому:
Factory<Test, OtherTest> factory = new Factory<Test, OtherTest>();
factory.Test.MyMethod(); //I want to generate properties named after class
factory.OtherTest.MyMethod();
Могу ли я сделать это во время компиляции?