Если можно терпеть методы фабрики использования (вместо конструкторов MyClass, Вы попросили), Вы могли всегда делать что-то вроде этого:
class MyClass<T>
{
private readonly T _value;
private MyClass(T value) { _value = value; }
public static MyClass<int> FromInt32(int value) { return new MyClass<int>(value); }
public static MyClass<string> FromString(string value) { return new MyClass<string>(value); }
// etc for all the primitive types, or whatever other fixed set of types you are concerned about
}
проблема А здесь состоит в том, что Вам было бы нужно к типу MyClass<AnyTypeItDoesntMatter>.FromInt32
, который является раздражающим. Нет очень хорошего пути вокруг этого, если Вы хотите поддержать частность конструктора, но здесь являетесь несколькими обходными решениями:
MyClass
. Сделайте MyClass<T>
, наследовались от MyClass
и вкладывают его в MyClass
. Переместите статические методы для MyClass
. Это будет вся видимость удаваться, за счет необходимости получить доступ MyClass<T>
как MyClass.MyClass<T>
. MyClass<T>
, как дали. Сделайте статический класс MyClass
, который называет статические методы в [1 111] использование MyClass<AnyTypeItDoesntMatter>
(вероятно, использование соответствующего типа каждый раз, только для хихиканья). MyClass
, который наследовался от [1 114] . (Для конкретности, скажем, MyClass<int>
.), Поскольку можно назвать статические методы определенными в базовом классе через название производного класса, можно теперь использовать MyClass.FromString
. Это дает Вам статическую проверку за счет большего количества записи.
, Если бы Вы довольны динамической проверкой, я использовал бы некоторое изменение на решении TypeCode выше.
(частные символы pdb) - это полные символы со всеми деталями.
(символы pdb) - это общедоступные символы, т. Е. Символы, которые вы экспортируете третьим лицам для облегчения отладки.
Дополнительные сведения см. Здесь http: // msdn. microsoft.com/en-us/library/ms789520.aspx[1218 impression
Общедоступные символы имеют имя, пропуск указателя фрейма (FPO) для каждой функции, а частные - почти все.
http://msdn.microsoft.com/en-us/library/cc501184.aspx
Обновленный MSDN ссылка: http://msdn.microsoft.com/en-us/library/ff553493.aspx
Как правило, общедоступных символов достаточно только для получения трассировки стека - имена функций, FPO данные и т. д.
Private - это надмножество public и также содержит глобальные и локальные переменные, типы и информацию о строке исходного кода. Частные символы предоставляют гораздо более богатые возможности отладки, но раскрывают множество деталей реализации