Вот мои методы с обработкой / комментариями исключений, которые я разработал на основе нескольких ответов в этом сообщении.
/// & lt; summary & gt; /// Возвращает домен зарегистрированного пользователя. /// Поэтому, если компьютер подключен к домену, но пользователь входит в локальную учетную запись. String.Empty будет возвращен. /// Relavant StackOverflow Post: http://stackoverflow.com/questions/926227/how-to-detect-if-machine-is-joined-to-domain-in-c /// & lt; / summary & gt; /// & lt; seealso cref = "GetComputerDomainName" / & gt; /// & lt; возвращает & gt; Доменное имя, если пользователь подключен к домену, String.Empty, если нет. & lt; / returns & gt; static string GetUserDomainName () {строка domain = String.Empty; try {domain = Environment.UserDomainName; string machineName = Environment.MachineName; if (machineName.Equals (домен, StringComparison.OrdinalIgnoreCase)) {domain = String.Empty; }} catch {// обрабатывать исключение, если требуется, в противном случае возвращает null} return domain; } /// & lt; summary & gt; /// Возвращает домен, к которому подключен компьютер. Примечание: если пользователь зарегистрирован как локальная учетная запись, домен компьютера все еще возвращается! /// & lt; / summary & gt; /// & lt; seealso cref = "GetUserDomainName" / & gt; /// & lt; returns & gt; Строка с именем домена, если она соединена. String.Empty, если это не так. & Lt; / returns & gt; static string GetComputerDomainName () {строка domain = String.Empty; try {domain = System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain (). Имя; } catch {// При необходимости обработать исключение. } return domain; }
Действительно, эта конкретная компоновка (явная реализация свойства интерфейса get-only автоматически реализуемым свойством) не поддерживается языком. Таким образом, либо делает это вручную (с полем), либо записывает частную автоматическую поддержку и прокси-сервер. Но, честно говоря, к тому моменту, когда вы это сделали, вы могли бы использовать поле ...
private bool MyBool {get; set;} bool IMyInterface.MyBoolOnlyGet {get { return MyBool;}}
или:
private bool myBool; bool IMyInterface.MyBoolOnlyGet {get {return myBool;}}
Проблема в том, что интерфейс имеет только getter, и вы пытаетесь явно реализовать его с помощью getter и setter. Когда вы явно реализуете интерфейс, явная реализация будет вызываться только тогда, когда вы ссылаетесь на тип интерфейса, поэтому ... если в интерфейсе есть только getter, то нет способа использовать установщик, поэтому нет смысла устанавливать сеттер там ,
Это, например, скомпилирует:
пространство имен AutoProperties {интерфейс IMyInterface {bool MyBoolOnlyGet {get; задавать; }} class MyClass: IMyInterface {static void Main () {} bool IMyInterface.MyBoolOnlyGet {get; задавать; }}}