私有接口,公共子进程和公共工厂,只能在其名称空间中实例化从私有接口继承的成员

时间:2014-06-12 22:22:28

标签: c# generics inheritance

我正在修补一些代码,出于好奇,我想知道如果我偶然发现它我将如何解决这个问题。

问题在于我想要一个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();
        }
    }
}

0 个答案:

没有答案