Re[5]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: mihailik Украина  
Дата: 30.12.03 13:57
Оценка:
RB>>А если нужно наследовать реализацию?

VD>С этим в дотнете вообще плохо. Обычно можно обойтись делегацией.


Вроде-бы где-то в недрах System.Runtime.InteropServices был специальный атрибут, который позволял сделать агрегацию COM-объекта в дотнет-объект.

То есть, нужно унаследовать дотнетовский объект от COM-объекта. Потом нужно сделать какой-то особый метод и пометить его особым атрибутом. Потому, что просто наследоваться от COM-объекта запрещается.
... << RSDN@Home 1.1.0 stable >>
Re[3]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: grat  
Дата: 30.12.03 14:01
Оценка:
Здравствуйте, 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а Stock#
Дата: 30.12.03 14:06
Оценка:
Здравствуйте, grat, Вы писали:

G>Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?


Попробуй MustRunInClientContextAttribute
Re[5]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: grat  
Дата: 30.12.03 14:10
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, grat, Вы писали:


G>>Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?


M>Попробуй MustRunInClientContextAttribute


А если они на разных машинах?
Re[6]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.03 03:12
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Вроде-бы где-то в недрах System.Runtime.InteropServices был специальный атрибут, который позволял сделать агрегацию COM-объекта в дотнет-объект.


Насколько я понимаю речь идет о подключении готовой реализации к обычному КОМ-объекту.

M>То есть, нужно унаследовать дотнетовский объект от COM-объекта. Потом нужно сделать какой-то особый метод и пометить его особым атрибутом. Потому, что просто наследоваться от COM-объекта запрещается.


Незнаю. Я такого атрибута не видел.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.03 03:12
Оценка:
Здравствуйте, grat, Вы писали:

G>Что надо сделать, чтобы одновременно работающие клиенты имели свое, уникальное, значение str?


Клиенты?

Ну, для этого нужно лезть (методами КОМ-а) в кол-контекст... выскребать от туда юзера или проверять роль... и на основании этих данных искать информацию в неком глобальном объекте (например хэш-таблице).

А вообще, тогда уж лучше делать все объекты не стэйтлес и хранить нужные данные в них.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Как создавать COM+-компоненты на .NET-е (это ответ, а
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.03 03:12
Оценка:
Здравствуйте, 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 ловит эксепшн, но не может его определить, сам обект НУЛЛ. пробывал вот так

......

public void Method()
{
.....
COMException("some description", 1);
......
}
........


а в с++ коде

.....
try
{
ISomePointer->Method();
}
catch(_com_error &error)
{

}
....

error получается НУЛЛ

ЕСЛИ КТОТО ЗНАЕТ ДРУГОЙ СПОСОБ, ЧТОБ ВОЗВРАТИТЬ 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 ловит эксепшн, но не может его определить, сам обект НУЛЛ. пробывал вот так


А>Marshal.ThrowExceptionForHR Method ?


Чет это не работает....
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.