RB>>А если нужно наследовать реализацию?
VD>С этим в дотнете вообще плохо. Обычно можно обойтись делегацией.
Вроде-бы где-то в недрах System.Runtime.InteropServices был специальный атрибут, который позволял сделать агрегацию COM-объекта в дотнет-объект.
То есть, нужно унаследовать дотнетовский объект от COM-объекта. Потом нужно сделать какой-то особый метод и пометить его особым атрибутом. Потому, что просто наследоваться от COM-объекта запрещается.
... << RSDN@Home 1.1.0 stable >>
Re[3]: Как создавать COM+-компоненты на .NET-е (это ответ, а
Здравствуйте, VladD2, Вы писали:
VD>Это можно сделать или с помозю разделяемых свойств КОМ+-а (Shared Property Manager). Или просто создав синглтон-объект средствами дотнета.
VD>Единственное что стоит учесть — это то что объекты могут загружаться в разных процессах (завист от конфигурации приложения). При этом ни один из способов работать не будет. Выходм может быть синглтон-КОМ-объект. Создать таковой без гемароя можно только на С++.
Все объекты выполняются в контексте одного процесса на DCOM сервере. Вот пример:
// server
[assembly: ApplicationActivation(ActivationOption.Server)]
namespase Test
{
public class Class1: ServicedComponent
{
[ContextStatic] internal static string str;
public Class1() {}
public void Method(string s)
{
str = s;
}
}
public class Class2: ServicedComponent
{
public Class2() {}
public string Method()
{
return Class1.str;
}
}
}
// client JScript
var c1 = new ActiveXObject("Test.Class1");
var c2 = new ActiveXObject("Test.Class2");
c1.Method("test1");
WScript.Echo(c2.Method());
Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?
Re[4]: Как создавать COM+-компоненты на .NET-е (это ответ, а
Здравствуйте, mikа, Вы писали:
M>Здравствуйте, grat, Вы писали:
G>>Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?
M>Попробуй MustRunInClientContextAttribute
А если они на разных машинах?
Re[6]: Как создавать COM+-компоненты на .NET-е (это ответ, а
Здравствуйте, mihailik, Вы писали:
M>Вроде-бы где-то в недрах System.Runtime.InteropServices был специальный атрибут, который позволял сделать агрегацию COM-объекта в дотнет-объект.
Насколько я понимаю речь идет о подключении готовой реализации к обычному КОМ-объекту.
M>То есть, нужно унаследовать дотнетовский объект от COM-объекта. Потом нужно сделать какой-то особый метод и пометить его особым атрибутом. Потому, что просто наследоваться от COM-объекта запрещается.
Незнаю. Я такого атрибута не видел.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Как создавать COM+-компоненты на .NET-е (это ответ, а
Здравствуйте, grat, Вы писали:
G>Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?
Клиенты?
Ну, для этого нужно лезть (методами КОМ-а) в кол-контекст... выскребать от туда юзера или проверять роль... и на основании этих данных искать информацию в неком глобальном объекте (например хэш-таблице).
А вообще, тогда уж лучше делать все объекты не стэйтлес и хранить нужные данные в них.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Как создавать COM+-компоненты на .NET-е (это ответ, а
Здравствуйте, grat, Вы писали:
G>А если они на разных машинах?
Это не сработает даже если они в разных процессах. В общем, плохая идея.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Как создавать COM+-компоненты на .NET-е (это ответ, а не
От:
Аноним
Дата:
08.07.08 09:17
Оценка:
ЛЮДИ! У кого нибудь получилось создать ActiveX сомпонент у которого бы генерировались события? У меня нет, все перерыл. Тема старая, может ее кто нибудь уже решил. (FrameWork 2.0)
Re: Как создавать COM+-компоненты на .NET-е (это ответ, а не
От:
Аноним
Дата:
08.07.08 14:58
Оценка:
Всем привет!
НАРОД, НЕ ОБОЙДИТЕ СТОРОНОЙ!!!!!!
я этот вопрос уже задавал, но никто не ответил, может щас ктото знает, как мне решить пролблему???
я написал на С# СОМ компонент и хочу добавить возможность возвращать HRESULT. но у меня никак не получаэтся, кроме 0 или 1 нисчего не возвращает. я пробывал генерить COMException, но результат тот же, возвращает или 0, или 1. и, например, с С++ кода в блоке try ловит эксепшн, но не может его определить, сам обект НУЛЛ. пробывал вот так
ЕСЛИ КТОТО ЗНАЕТ ДРУГОЙ СПОСОБ, ЧТОБ ВОЗВРАТИТЬ HRESULT, ПОДСКАЖИТЕ ПЛЗ!!!
СПС.
Re[2]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От:
Аноним
Дата:
08.07.08 15:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Всем привет! А>НАРОД, НЕ ОБОЙДИТЕ СТОРОНОЙ!!!!!! А> А>я этот вопрос уже задавал, но никто не ответил, может щас ктото знает, как мне решить пролблему??? А>я написал на С# СОМ компонент и хочу добавить возможность возвращать HRESULT. но у меня никак не получаэтся, кроме 0 или 1 нисчего не возвращает. я пробывал генерить COMException, но результат тот же, возвращает или 0, или 1. и, например, с С++ кода в блоке try ловит эксепшн, но не может его определить, сам обект НУЛЛ. пробывал вот так
Marshal.ThrowExceptionForHR Method ?
Re[3]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От:
Аноним
Дата:
09.07.08 10:23
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Всем привет! А>>НАРОД, НЕ ОБОЙДИТЕ СТОРОНОЙ!!!!!! А>> А>>я этот вопрос уже задавал, но никто не ответил, может щас ктото знает, как мне решить пролблему??? А>>я написал на С# СОМ компонент и хочу добавить возможность возвращать HRESULT. но у меня никак не получаэтся, кроме 0 или 1 нисчего не возвращает. я пробывал генерить COMException, но результат тот же, возвращает или 0, или 1. и, например, с С++ кода в блоке try ловит эксепшн, но не может его определить, сам обект НУЛЛ. пробывал вот так