Object Creation

Jul 21, 2008 at 6:43 PM
There is most likely a simple answer for this.

I have 2 class.  Class A and B.

UnityContainer.RegisterType<
IA,A>();
UnityContainer.RegisterType<
IB, B>();

Class A creates a collection of class B's inside it. 

How do I do this without passing in the Unity container object or referencing a singleton Unity container within Object A?





 

Jul 21, 2008 at 10:20 PM
Would something like the following work for you?   The injection constructor will provide an instance that can be used by the Activator.CreateInstance() method.


    public interface IB
    {
        int Index { get; set; }
    }


    public class A : IA
    {
        private List<IB> bList = new List<IB>();

        public A(IB bInstance)
        {
            for (int i = 0; i < 20; i++ )
            {
                IB bitem = (IB)Activator.CreateInstance(bInstance.GetType());
                bitem.Index = i;
                bList.Add(bitem);
            }
        }
    }

Jul 22, 2008 at 12:32 AM

That is cool.  I did not know you could do that.

I ended up creating a factory interface and setting it with unity. I am building this for some utility classes.

What its for is a class called IDirectoryInfo based on DirectoryInfo and IFileInfo based on FileInfo.  These classes are hard to test and I was making interfaces for them.  I ran into a problem when the IFileInfo interface needed to be constructed in the DirectoryInfo class. 

Now that I look back I think it probably alright to hard code IFileInfo implementation with the corresponding IDirectoryInfo Implementation.