小编Dov*_*Dov的帖子

如何在左侧使用带有Type的IS运算符?

我有一个我正在编写的方法,它使用反射来列出类的静态属性,但我只对那些特定类型的方法感兴趣(在我的例子中,属性必须是从DataTable派生的类型).我想要的是类似下面的if()语句(目前总是返回true):

PropertyInfo[] properties = ( typeof(MyType) ).GetProperties( BindingFlags.Public
    | BindingFlags.Static );

foreach( PropertyInfo propertyInfo in properties ) {
    if( !( propertyInfo.PropertyType is DataTable ) )
        continue;

    //business code here
}
Run Code Online (Sandbox Code Playgroud)

谢谢,我很难过.

c# reflection static types properties

2
推荐指数
1
解决办法
234
查看次数

在命令行xcodebuild调用之后分发.app文件

我正在构建/存档我的Mac应用程序以便从命令行调用(下面)进行分发,并安装了Xcode 4.3.为了清楚起见,我之前没有为Xcode 4.3提供解决此问题的工作解决方案,因此对早期Xcode版本的建议很容易仍然有效.这是电话:

/usr/bin/xcodebuild -project "ProjectPath/Project.pbxproj" -scheme "Project" -sdk macosx10.7 archive
Run Code Online (Sandbox Code Playgroud)

这成功运行,它生成一个.xcarchive位于我的~/Library/Developer/Xcode/Archives/<date>文件夹中的文件.获取存档文件生成路径的正确方法是什么?我正在寻找一种方法来获取.app其中包含的文件的路径,因此我可以分发它.

我已经查看了MAN页面xcodebuild(并在网上进行了大量搜索)并且没有找到任何线索.

macos command-line build-process build xcode4

2
推荐指数
1
解决办法
5203
查看次数

声明符合C#接口的类我不拥有

假设我正在使用第三方库中的多个类,所有这些类都包含一个int ID {get;}属性.例如:

class A {
    ...
    int ID {get;}
    ...
}

class B {
    ...
    int ID {get;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

ID 我需要在我正在编写的方法中使用的唯一属性,它需要引用A或B.我已经声明了一个接口:

interface IHasID
{
    int ID {get;}
}
Run Code Online (Sandbox Code Playgroud)

但我不能把两种AB作为IHasID叫我的方法时.

例如,在Swift中,我可以声明一个符合"协议"(Swift的接口版本)的扩展.我没有看到用C#做到这一点的方法.引用共享属性的不相关类的最接近方式是什么?

c# interface

2
推荐指数
2
解决办法
84
查看次数

无法从-mouseDown:event获取有用的位置

完全重写

我现在重现了我之前在一个简单的示例项目中发布的问题,所以我完全知道我可能做错了什么.这就是我现在正在做的事情.

  1. 创建一个新的vanilla Cocoa应用程序(没有核心数据,不是基于文档的)
  2. 添加一个名为"MyImageView.m"的类,没有标题
  3. 用以下内容替换MyImageView.m的内容:

    @interface MyImageView :NSImageView {} @end
    
    
    @implementation MyImageView
    - (void)mouseDown:(NSEvent *)event {
        NSLog( @"mouse down event: %@", event );
        NSPoint point = [event locationInWindow];
        NSLog( @"mouseDown location: (%d,%d)", point.x, point.y );
    }
    @end
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在Interface Builder中打开MainMenu.xib

  5. 将图像拖到窗口上
  6. 将其班级更改为 MyImageView
  7. 保存一切并运行
  8. 单击Image Well上的任意位置

然后我在控制台上看到以下消息:

2011-01-01 13:58:12.351 TestApp[1167:903] mouse down event: NSEvent: type=LMouseDown loc=(237,242) time=2033.7 flags=0x100 win=0x0 winNum=573 ctxt=0x0 evNum=286 click=1 buttonNumber=0 pressure=1

2011-01-01 13:58:12.353 TestApp[1167:903] mouseDown location: (-2057547688,16)

为什么NSEvent的字符串表示中的"loc"是正确的,但-locationInWindow显然是错误的?我怎么可能会导致这些琐碎的代码错误?

我已经重新启动了我的系统以防可能有所帮助.

macos mouse events cocoa objective-c

0
推荐指数
1
解决办法
1257
查看次数