我希望在一个类中有两个简单的调用,这些调用可以被其他类转换。类似的东西:
ObjectCreator.CreateBlank<Human>();
ObjectCreator.CreatePopulated<Human>();
ObjectCreator.CreateBlank<Dog>();
ObjectCreator.CreatePopulated<Dog>();
我目前这样做:
public class ObjectCreator
{
public static T CreateBlank<T>()
{
return Activator.CreateInstance<T>();
}
public static T CreatePopulated<T>()
{
//Somehow return new object with populated properties
}
}
我正在与人口稠密的部分挣扎。我希望它返回具有已定义属性的该类型的“默认”对象。我尝试了一些涉及传递接口的东西,但是它很快就乱了(我不希望这个特别干净)
所以如果我调用了ObjectCreator.CreatePopulated(),我希望以某种方式去另一个类,我创建一个新的Anything,并将它的属性填充到特定的值。感觉就像我很接近,但在这里错过了一块拼图。
我的最终游戏是尽可能简单/可读。 任何帮助表示赞赏。
我意识到简单地调用一个创建和填充每个对象的类可能更容易,但这对我来说是一个学习练习,我想尝试尽可能地使其工作。 。
答案 0 :(得分:4)
我建议做这样的事情:
public interface IPopulatable
{
void Populate();
}
public class ObjectCreator
{
public static T CreateBlank<T>() where T : new ()
{
return new T();
}
public static T CreatePopulated<T>() where T : IPopulatable, new()
{
var populatable = new T();
populatable.Populate();
return populatable;
}
}
public class Human : IPopulatable
{
public string Name { get; set; }
public void Populate()
{
Name = "Joe";
}
}