Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, ghostrider, Вы писали:
AVK>>>Ты забыл сказать чего ты собственно хочешь добиться и зачем.
G>>наличия строковых констант на которые я мог бы в любой момент ссылаться в своем коде (из другой сборки)
AVK>Ссылайся наздоровье на обычные константы? Что мешает?
Имхо, перед тем как такое советовать, следует посмотреть, что компилятор сделает с обращением к такой константе.
Вот пример:
1-ая сборка:
namespace Test1
{
public class ClassA
{
public const string CONST = "Const 2";
}
}
2-ая сборка:
using System;
namespace Test2
{
public class ClassB
{
public static void Main()
{
Console.WriteLine(Test1.ClassA.CONST);
}
}
}
IL метода Main из второй сборки:
.method public hidebysig static void Main() cil managed
{
.entrypoint
// Code size 11 (0xb)
.maxstack 1
IL_0000: ldstr "Const 2"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method ClassB::Main
Как видишь, в IL-е никакого обращения к статической переменной нет. Вместо этого компилятор подставил строковый литерал. Поэтому, если ты измнишь в первой сборке определение CONST, и пересоберешь ее, не пересобирая сборку 2, то ничего хорошего после этого не будет (во второй сборке останется прежднее значение CONST).