Если он вызывает конструктор вашего класса, единственное, что вы можете сделать, это выбросить исключение в конструкторе, если вы определите, что экземпляр был создан ранее.Поскольку у вас нет контроля над другой библиотекой, вы не сможете использовать фабричный метод или статическое свойство, которое обычно используется для управления доступом к одноэлементному файлу.Вы также можете использовать легковесный прокси, который обёртывает экземпляр Singleton.В этом примере может быть создано любое количество MyObjectProxy, но все они откладывают реализацию до одного экземпляра MyObject.
public class MyObject {
internal MyObject() {
}
private int _counter;
public int Increment() {
return Interlocked.Increment(ref _counter);
}
}
public class MyObjectProxy {
private static readonly MyObject _singleton = new MyObject();
public MyObjectProxy() {
}
public int Increment() {
return _singleton.Increment();
}
}