Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > C# Reflection


Автор: pablo 18.6.2006, 00:05
Есть код: 

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Xml;
using System.IO;

namespace Kursinis
{
    class Program
    {
        static void Main(string[] args)
        {
            MovieFinder finder = new ColonMovieFinder("file1.txt");
            List<string> a = finder.findAll();
            foreach (string s in a)
                Console.WriteLine(s);
        }
    };
    interface MovieFinder 
    {
        List<string> findAll();
    };
    class ColonMovieFinder : MovieFinder
    {
        public ColonMovieFinder(string filename)
        {
            StreamReader reader = new StreamReader(filename);
            string tmp;
            m_Movies = new List<string>();
            while ((tmp = reader.ReadLine()) != null)
                m_Movies.Add(tmp);
        }
        public List<string> findAll()
        {
            return m_Movies;
        }
        private List<string> m_Movies;
    };
}


Как можно используя C# Reflection создать объект класса ColonMovieFinder ? 
Заранее благодарен за ответы. 

Автор: Void 18.6.2006, 00:11
Цитата(pablo @  18.6.2006,  02:05 Найти цитируемый пост)
Как можно используя C# Reflection создать объект класса ColonMovieFinder ? 

Что значит, используя reflection? Тут масса вариантов. Простейший для демонстрации:
Код
MovieFinder finder = (MovieFinder) Activator.CreateInstance(
    Assembly.GetCallingAssembly().GetType("Kursinis.ColonMovieFinder"),
    new object[] { "file1.txt" });
 

Автор: arilou 18.6.2006, 00:42
pablo, че та мне это Фаулера напомнило  smile  

Автор: pablo 18.6.2006, 01:29
Цитата

Что значит, используя reflection? Тут масса вариантов. Простейший для демонстрации:

Это как раз мне и надо было smile

Цитата

pablo, че та мне это Фаулера напомнило 


Да взято именно от туда smile 

Автор: pablo 18.6.2006, 02:59
А как перед созданием узнать какие конструкторы имеются у объекта и какие у них параетры ? 

Автор: arilou 18.6.2006, 08:59
Цитата(pablo @  18.6.2006,  02:59 Найти цитируемый пост)
А как перед созданием узнать какие конструкторы имеются у объекта и какие у них параетры ?  

Это ты dependency injection собираешься освоить? Посмотри, как сделано тут: http://www.castleproject.org/index.php/Main_Page 

Автор: pablo 18.6.2006, 09:15
Цитата

Это ты dependency injection собираешься освоить

Просто пытаюсь сделать что-то похожее, хотябы самый примитивный пример.  

Автор: mr.DUDA 19.6.2006, 20:33
Цитата(pablo @  18.6.2006,  02:59 Найти цитируемый пост)
А как перед созданием узнать какие конструкторы имеются у объекта и какие у них параетры ? 

берём Type.GetConstructors(), проходим по каждому и дёргаем GetArguments(), вроде... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)