2016-01-19 3 views
0

В моем приложении C# я загружаю несколько сборок в одно приложение. Чтобы быстро обменивать объекты между сборками, я ищу существующий класс в общедоступном пространстве имен .NET, который я мог бы «злоупотреблять» для обмена общими объектами.Обменивать произвольные объекты между сборками

Я думал о System.ConfigurationManager.AppSettings, но этот поддерживает только строки. Есть ли у кого есть тип object?

Я знаю, что это ужасное решение для обмена данными между сборками, но я не могу изменить интерфейсы прямо сейчас.

ответ

2

Я предполагаю, что вы хотите сделать это:

// Assembly 1 
SomeSuperGlobal.Set("someKey", new Foo { Bar = "baz" }); 

// Assembly 2 
var foo = SomeSuperGlobal.Get("someKey"); 

Прежде предупреждение, что у вас есть ужасный дизайн. Вы should not let your code rely on global state, эти практики были отменены с шестидесятых по крайней мере. Не делайте этого и тщательно пересматривайте приложение.

Это, как говорится, вы могли бы use named data slots:

// Assembly 1 
LocalDataStoreSlot dataSlot = System.Threading.Thread.AllocateNamedDataSlot("someKey"); 
System.Threading.Thread.SetData(dataSlot, new Foo { Bar = "baz" }); 

// Assembly 2 
LocalDataStoreSlot dataSlot = System.Threading.Thread.GetNamedDataSlot("someKey"); 
var foo = System.Threading.Thread.GetData(dataSlot); 

Обязательно прочитайте Thread.AllocateNamedDataSlot()'s documentation.

+0

THX, это именно то, что им нужно. я попробую, а затем отчитаюсь. – oleole

Смежные вопросы