我正在修补一些代码,出于好奇,我想知道如果我偶然发现它我将如何解决这个问题。
问题在于我想要一个Interface和一个通用(Factory)类,它只能创建从该接口继承的对象。存在实现该接口的具体类,其旨在由通用工厂使用;但是,我不希望任何人添加来创建自己的接口实现,但我希望他们能够创建自己的从该接口继承的对象实例。
我有一段代码说明了我要做的事情;但是,由于可访问性不一致,它无法编译。这是一段代码,说明了我在询问的内容
using System;
using InterfaceTest.Objects;
namespace InterfaceTest
{
class Program
{
static void Main(string[] args)
{
CreatureFactory<Person> p = new CreatureFactory<Person>();
p.Create();
Console.ReadLine();
}
}
}
namespace InterfaceTest.Objects
{
interface LivingCreature
{
int Age { get; set; }
}
public class Person : LivingCreature
{
public int Age
{
get;
set;
}
}
public class CreatureFactory<T> where T : class, LivingCreature, new()
{
public T Create()
{
return new T();
}
}
}