Note that there are some explanatory texts on larger screens.

plurals
  1. POIs there a way to get field name including class containing it and another class containing this class if field passed into function as object?
    primarykey
    data
    text
    <p>I doing next thing... I pass into some function the field of some controls, like:</p> <pre><code>class ScenarioSelector { public ScenarioSelector() { SubjectInfo.SetStr(lbl_labs_header.Text); } } class SubjectInfo { public static void SetStr(object obj) { string name = obj.GetType().Name; string full_name = obj.GetType().FullName; Type t = obj.GetType(); //FieldInfo fi = FieldInfo.GetFieldFromHandle(/*I don't have any handle here*/); //Somehow understand that passed object is... "ScenarioSelector.lbl_labs_header.Text" and set it's value depending from it. } } </code></pre> <p>Function SetStr should understand the field name of passed object and set it's value depending of it's name. I tried something, but can't get what I need, I only getting System.String as name. <img src="https://i.stack.imgur.com/Lvy1L.png" alt="enter image description here"></p> <p>Whole idea behind that is interface translation. I want to store in file something like: <strong>[ScenarioSelector.lbl_labs_header.Text][TEXT_ON_THIS_LABEL]</strong> And easy set it by calling function <strong>SetStr</strong></p> <p>Maybe you have some ideas of how to make it another way or fix my way?</p> <p>P.S. Based on <strong>Medinoc</strong> example I did this:</p> <pre><code>static void Test3&lt;T&gt;(Expression&lt;Func&lt;T&gt;&gt; exp) { Expression body = exp.Body; List&lt;string&gt; memberNames = new List&lt;string&gt;(); MemberInfo previousMember = null; while(body.NodeType == ExpressionType.MemberAccess) { MemberExpression memberBody = (MemberExpression)body; string memberName = memberBody.Member.Name; if (previousMember == null) //this is first one { switch (memberBody.Member.MemberType) { case MemberTypes.Field: ((FieldInfo)memberBody.Member).SetValue(/*How to get the object instance?*/, "some_val"); break; case MemberTypes.Property: break; default: break; } } if (memberBody.Expression.NodeType == ExpressionType.Constant &amp;&amp; previousMember != null) //If it's the 'last' member, replace with type memberName = previousMember.DeclaringType.Name; memberNames.Add(memberName); previousMember = memberBody.Member; body = memberBody.Expression; } memberNames.Reverse(); Console.WriteLine("Member: {0}", string.Join(".", memberNames)); } </code></pre> <p>But still don't know how to get instance of object to set needed value.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload