मैंने अपना खुद का चेकबॉक्स (UserControl) बनाया है। इसमें कंट्रोलसोर्स नामक एक संपत्ति है जो बाध्यकारी स्रोत के रूप में काम करती है। हालांकि, नियंत्रण प्रकार का डेटा प्रकार भी एक कस्टम प्रकार है। चारों ओर खेल,सी # कस्टम चेकबॉक्स + कस्टम बाध्यकारी डेटा प्रकार
...
[System.ComponentModel.Bindable(true), Browsable(true), Category("Behavior")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public IMyBool ControlSource
{
get { return this.chx.Checked ? IMyBool.True : IMyBool.False; }
set { this.chx.Checked = value.Value; }
}
...
बाद मैं एक अंतरफलक यहाँ समाधान की कोशिश की:
public interface IMyBool
{
bool Value { get; set; }
IMyBool True { get; }
IMyBool False { get; }
}
public class MyBool
{
protected bool? _bValue = null;
protected string _sTrue = String.Empty;
protected string _sFalse = String.Empty;
protected string _sNull = String.Empty;
public MyBool(bool? bValue = null)
{
this._bValue = bValue;
}
public override string ToString()
{
return this._bValue.HasValue ? (this._bValue.Value ? _sTrue : _sFalse) : _sNull;
}
public bool Value
{
get { return this._bValue.Value; }
set { this._bValue = value; }
}
}
public class MyInvoiceBool : MyBool, IMyBool
{
public static implicit operator MyInvoiceBool(bool? bValue)
{
return bValue.HasValue ? (bValue.Value ? True : False) : Null;
}
public static implicit operator bool?(MyInvoiceBool ivbValue)
{
return ivbValue._bValue;
}
public MyInvoiceBool(bool? bValue = null)
{
base._sTrue = "Rechnung wird gestellt";
base._sFalse = "Rechnung wird nicht gestellt";
base._bValue = bValue;
}
public static MyInvoiceBool True
{
get { return new MyInvoiceBool(true); }
}
public static MyInvoiceBool False
{
get { return new MyInvoiceBool(false); }
}
public static MyInvoiceBool Null
{
get { return new MyInvoiceBool(); }
}
}
public class MyInvoiceAddressBool : MyBool
{
public static implicit operator MyInvoiceAddressBool(bool? bValue)
{
return bValue.HasValue ? (bValue.Value ? True : False) : Null;
}
public static implicit operator bool?(MyInvoiceAddressBool ivbValue)
{
return ivbValue._bValue;
}
public MyInvoiceAddressBool(bool? bValue = null)
{
base._sTrue = "Abweichende Rechnungsadresse";
base._bValue = bValue;
}
public static MyInvoiceAddressBool True
{
get { return new MyInvoiceAddressBool(true); }
}
public static MyInvoiceAddressBool False
{
get { return new MyInvoiceAddressBool(false); }
}
public static MyInvoiceAddressBool Null
{
get { return new MyInvoiceAddressBool(); }
}
}
मेरा उद्देश्य है कि मैं अपने ही bool डेटा प्रकार जो सच, झूठी या अशक्त के लिए एक वैकल्पिक स्ट्रिंग अभिव्यक्ति जानता है का उपयोग कर सकते है। हालांकि, समूहबॉक्स नियंत्रण आम तौर पर कोडित किया जाना चाहिए। यही कारण है कि एक इंटरफेस समाधान मेरे दिमाग में आया था। हालांकि, यह काम नहीं करता है। मुझे पूरा यकीन है कि "अक्सर इस्तेमाल किया जाने वाला" समाधान है, है ना?