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


Автор: Wanderer2019 27.9.2006, 16:15
Всем привет...
Пробую написать свой ком компонент.. отчасти получается, но есть некоторые трудности... возможно у кого то возникали такие же проблемы...

из какого то примера в нете вытащил следующий код:
Объявляем некий интерфейс, через который будем взаимодействавать с методами объекта
Код

public interface ITestComponent
    {
        int Mul(int First, int Second);
        int Square { get; set; }
        String About { get; }
//        bool Show();
    }

Далее описываем саму реализацию:
Код

    public class TestComponent : ITestComponent
    {
//        public bool Show()
//        {
//            Form1 frm=new Form1();
//            frm.ShowDialog();
//            return true;
//        }
        public TestComponent()
        {
            m_iSquare = 0;      
        }

        public int Mul( int First, int Second)
        {
            return First * Second;
        }    

        private int m_iSquare;
        public int Square
        {
            get
            {
                return m_iSquare;
            }

            set
            {
                m_iSquare = value * value;
            }
        }

        public String About
        {
            get
            {
                return "This component is written in C#";
            }
        }
    }

Закоментареные строчки это то, что я добавил сам... Т.е. в проект я подтянул форму и в методе пытаюсь создать и вывести ее экземпляр.

В созданном параллельно проекте я цепляю этот ком (dll) и пытаюсь обратиться к моему методу Show на что компилятор ругается:
Код

An unhandled exception of type 'System.MissingMethodException' occurred in system.windows.forms.dll

Additional information: Method not found: Boolean TestComponentLib.TestComponent.Show().

в чем загвоздка? =(

Автор: mr.DUDA 27.9.2006, 18:40
Не подгружена System.Windows.Forms.dll, поэтому и метод её использующий, не найден.

Автор: Wanderer2019 28.9.2006, 09:30
хм ну вообщем нет... проблема оказалась не в этом...
на самом деле вышеописанный код рабочий... я же подключил соответствующие reference поэтому метод Show не мог быть не найден по идеи... тем более он же ругался на метод именно моего класса, а не Windows.Forms...
как оказалось при повторной регистрации dll и генерации tlb необходимо пересоздавать ключи snk (или же просто настроить проект так чтобы он их генерил автоматически)

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