标签: properties

获取属性的名称作为字符串

(参见下面我使用我接受的答案创建的解决方案)

我正在尝试提高一些涉及反射的代码的可维护性.该应用程序有一个.NET Remoting接口,公开(除此之外)一个名为Execute的方法,用于访问未包含在其已发布的远程接口中的应用程序部分.

以下是应用程序如何指定可通过Execute访问的属性(本例中为静态属性):

RemoteMgr.ExposeProperty("SomeSecret", typeof(SomeClass), "SomeProperty");
Run Code Online (Sandbox Code Playgroud)

所以远程用户可以调用:

string response = remoteObject.Execute("SomeSecret");
Run Code Online (Sandbox Code Playgroud)

并且应用程序将使用反射来查找SomeClass.SomeProperty并将其值作为字符串返回.

不幸的是,如果有人重命名SomeProperty并忘记更改ExposeProperty()的第3个parm,它会破坏这种机制.

我需要相当于:

SomeClass.SomeProperty.GetTheNameOfThisPropertyAsAString()
Run Code Online (Sandbox Code Playgroud)

在ExposeProperty中用作第三个parm,因此重构工具将负责重命名.

有没有办法做到这一点?提前致谢.

好的,这是我最终创建的内容(根据我选择的答案和他引用的问题):

// <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)
    { …
Run Code Online (Sandbox Code Playgroud)

c# reflection properties

191
推荐指数
9
解决办法
20万
查看次数

我可以在React.js中更新组件的道具吗?

在开始使用React.js之后,看起来似乎props是静态的(从父组件传入),而state基于事件的更改.但是,我在文档中注意到了一个引用componentWillReceiveProps,具体包括这个例子:

componentWillReceiveProps: function(nextProps) {
  this.setState({
    likesIncreasing: nextProps.likeCount > this.props.likeCount
  });
}
Run Code Online (Sandbox Code Playgroud)

这似乎意味着属性可以根据对比nextProps来改变组件this.props.我错过了什么?道具是如何改变的,还是我误解了它被称为何处?

javascript properties reactjs

181
推荐指数
5
解决办法
24万
查看次数

物业获取者和二传手

有了这个简单的类,我得到编译器警告

试图x在自己的setter/getter中修改/访问

当我像这样使用它时:

var p: point = Point()
p.x = 12
Run Code Online (Sandbox Code Playgroud)

我得到一个EXC_BAD_ACCESS.如果没有明确支持ivars,我怎么能这样做?

class Point {

    var x: Int {
        set {
            x = newValue * 2 //Error
        }
        get {
            return x / 2 //Error
        }
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

properties compiler-warnings getter-setter swift

179
推荐指数
8
解决办法
23万
查看次数

获取对象的属性名称

我想知道在JavaScript中是否有任何方法可以循环遍历这样的对象.

for(var i in myObject) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是得到这样的每个属性的名称.

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法在谷歌上找到类似的东西.他们说要用它们传递变量的名称,但这不是我想要实现的选项.

谢谢你尽你所能的帮助.

javascript properties object

170
推荐指数
6
解决办法
29万
查看次数

如何遍历类的所有属性?

我上课了.

Public Class Foo
    Private _Name As String
    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Private _Age As String
    Public Property Age() As String
        Get
            Return _Age
        End Get
        Set(ByVal value As String)
            _Age = value
        End Set
    End Property

    Private _ContactNumber As String
    Public Property ContactNumber() As String
        Get
            Return _ContactNumber
        End Get
        Set(ByVal value As String)
            _ContactNumber = value
        End Set
    End Property


End …
Run Code Online (Sandbox Code Playgroud)

.net vb.net reflection properties class

165
推荐指数
4
解决办法
15万
查看次数

如何使用Linq从对象列表中获取唯一的属性列表?

我正在尝试使用Linq返回一个id列表,给出id为属性的对象列表.我希望能够在不循环遍历每个对象并拉出我找到的唯一ID的情况下执行此操作.

我有一个MyClass类型的对象列表,这个类的一个属性是一个ID.

public class MyClass
{
  public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是写一个Linq查询来返回我的那些ID列表

IList<MyClass>如果它返回一个IEnumerable<int>id ,我该怎么做呢?

我确信必须能够使用Linq在一行或两行中完成它,而不是循环遍历MyClass列表中的每个项目并将唯一值添加到列表中.

任何帮助创建一个优雅的解决方案将非常感谢!

linq properties class list c#-3.0

164
推荐指数
3
解决办法
12万
查看次数

为什么JavaScript中有2 == [2]?

我最近2 == [2]在JavaScript中发现了.事实证明,这个怪癖有几个有趣的后果:

var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Run Code Online (Sandbox Code Playgroud)

同样,以下工作:

var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,这也有效:

[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Run Code Online (Sandbox Code Playgroud)

这些行为在所有浏览器中都是一致的

知道为什么这是一个语言功能吗?

以下是这个"功能"的更为疯狂的后果:

[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!

var a = [0];
a == a // true
a == !a …
Run Code Online (Sandbox Code Playgroud)

javascript arrays properties

163
推荐指数
6
解决办法
1万
查看次数

用于检查对象属性的Javascript"not in"运算符

JavaScript中是否有任何"not in"运算符来检查对象中是否存在属性?我无法在Google或SO周围找到任何相关信息.这是我正在处理的一小段代码,我需要这种功能:

var tutorTimes = {};

$(checked).each(function(idx){
  id = $(this).attr('class');

  if(id in tutorTimes){}
  else{
    //Rest of my logic will go here
  }
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我会把所有内容都放在else语句中.我只是为了使用else部分来设置if/else语句似乎是错的...

javascript properties object operators

156
推荐指数
4
解决办法
17万
查看次数

属性和属性有什么区别?

这些似乎意味着同样的事情.但什么术语在哪种情况下更合适?

modeling properties

154
推荐指数
8
解决办法
10万
查看次数

如何检查对象是否具有某些方法/属性?

也许使用动态模式?你可以使用dynamic关键字调用任何方法/属性,对吗?例如,如何在调用myDynamicObject.DoStuff()之前检查方法是否存在?

.net c# reflection methods properties

148
推荐指数
4
解决办法
14万
查看次数