मैं अपने accessors के व्यवहार को बदलने के बारे यकीन नहीं है। यह बिल्कुल आसान नहीं लगता है। अपनी बेस क्लास में ट्रिमिंग जोड़ने के बारे में कैसे?
class CoreTransaction
{
public void Trim()
{
IEnumerable<PropertyInfo> stringProperties =
this.GetType().GetProperties()
.Where(p => p.PropertyType == typeof(string) && p.CanRead && p.CanWrite);
foreach (PropertyInfo property in stringProperties)
{
string value = (string)property.GetValue(this, null);
value = value.Trim();
property.SetValue(this, value, null);
}
}
}
(इसके अलावा, जांचें कि आपकी क्षेत्रों दोनों पढ़ सकते हैं और करने के लिए लिखा जा सकता है ध्यान दें।)
संपादित करें: तब आप अपने आधार वर्ग के लिए कुछ इस तरह जोड़ सकता है, और उन सभी को एक ही बार में ट्रिम करें। WeakReference वर्ग आप आसानी से कचरा कलेक्टर के रास्ते में आ बिना अपने उदाहरणों का ट्रैक रखने के लिए अनुमति देगा:
class CoreTransaction
{
private static List<WeakReference> allCoreTransactions = new List<WeakReference>();
public CoreTransaction()
{
allCoreTransactions.Add(new WeakReference(this));
}
public static void TrimAll()
{
foreach (WeakReference reference in allCoreTransactions)
{
if (reference.IsAlive)
{
((CoreTransaction)reference.Target).Trim();
}
}
}
}
स्रोत
2011-10-11 13:42:49
आप किसी दिए गए संपत्ति सेटर में क्रम में ऐसा करना चाहते हैं या आप अपनी फ़ाइलों के सभी स्रोत-कोड बदलना चाहते कर रहे हैं? – Oliver