(আমি গৃহীত উত্তরটি ব্যবহার করে নীচের সমাধানটি দেখুন)
আমি প্রতিবিম্বিত কিছু কোডের রক্ষণাবেক্ষণের উন্নতি করার চেষ্টা করছি। অ্যাপ্লিকেশনটির প্রকাশিত দূরবর্তী ইন্টারফেসের অন্তর্ভুক্ত নয় এমন অ্যাপের অংশগুলি অ্যাক্সেস করার জন্য এক্সিকিউট নামক একটি পদ্ধতি রয়েছে .NET রিমোটিং ইন্টারফেস এক্সপোজিং (অন্যান্য জিনিসের মধ্যে) has
অ্যাপ্লিকেশনটি কীভাবে বৈশিষ্ট্যগুলি নির্ধারণ করে (এই উদাহরণের মধ্যে একটি স্থিতিশীল) যা নির্বাহের মাধ্যমে অ্যাক্সেসযোগ্য হবে বোঝানো হয়েছে:
RemoteMgr.ExposeProperty("SomeSecret", typeof(SomeClass), "SomeProperty");
সুতরাং একটি দূরবর্তী ব্যবহারকারী কল করতে পারে:
string response = remoteObject.Execute("SomeSecret");
অ্যাপ্লিকেশনটি সামারক্লাস.সোমপ্রোপার্টি খুঁজে পেতে এবং তার মানটিকে স্ট্রিং হিসাবে ফিরিয়ে দিতে প্রতিবিম্বটি ব্যবহার করবে।
দুর্ভাগ্যক্রমে, কেউ যদি সাম্প্রোপার্টিটির নাম পরিবর্তন করে এবং এক্সপোজপ্রপার্টি () এর 3 য় পার্ম পরিবর্তন করতে ভুলে যায় তবে তা এই প্রক্রিয়াটিকে ভেঙে দেয়।
এর সমতুল্য আমার দরকার:
SomeClass.SomeProperty.GetTheNameOfThisPropertyAsAString()
এক্সপোজপ্রপার্টিতে 3 য় পারম হিসাবে ব্যবহার করতে যাতে রিফ্যাক্টরিং সরঞ্জামগুলি পুনরায় নামগুলির যত্ন নেবে।
এই কাজ করতে একটি উপায় আছে কি? আগাম ধন্যবাদ.
ঠিক আছে, এখানে আমি কী তৈরি করে শেষ করেছি (আমার নির্বাচিত উত্তর এবং তিনি যে প্রশ্নটি উল্লেখ করেছেন তার উপর ভিত্তি করে):
// <summary>
// Get the name of a static or instance property from a property access lambda.
// </summary>
// <typeparam name="T">Type of the property</typeparam>
// <param name="propertyLambda">lambda expression of the form: '() => Class.Property' or '() => object.Property'</param>
// <returns>The name of the property</returns>
public string GetPropertyName<T>(Expression<Func<T>> propertyLambda)
{
var me = propertyLambda.Body as MemberExpression;
if (me == null)
{
throw new ArgumentException("You must pass a lambda of the form: '() => Class.Property' or '() => object.Property'");
}
return me.Member.Name;
}
ব্যবহার:
// Static Property
string name = GetPropertyName(() => SomeClass.SomeProperty);
// Instance Property
string name = GetPropertyName(() => someObject.SomeProperty);
এখন এই দুর্দান্ত ক্ষমতা সহ, এক্সপোজপ্রপার্টি পদ্ধতিটি সহজ করার সময় time ডোরকনবগুলি পলিশ করা বিপজ্জনক কাজ ...
ধন্যবাদ সবাইকে.