а оператор new мы не использовали
using System;
using System.Reflection;
public class Program
{
public static void Main()
{
MoveObject obj = UnityFactory.GetInstance<MoveObject>();
obj.moveObject.SayHello();
}
}
public class GameObject
{
private string name;
public GameObject()
{
name = "John";
}
public void SayHello() {
Console.WriteLine("Hello! My name is " + name );
}
}
public class MoveObject
{
public GameObject moveObject;
}
public class UnityFactory {
public static T GetInstance<T>() where T: new()
{
// Создадим экземпляр основного класса
T instance = (T)Activator.CreateInstance(typeof(T));
// Инициализируем его открытые поля
FieldInfo[] fields = typeof(T).GetFields();
foreach (FieldInfo field in fields)
{
object fieldValue = Activator.CreateInstance(field.FieldType);
field.SetValue(instance, fieldValue);
}
return instance;
}
}