小编Mat*_*vey的帖子

更新到Xcode 5 - ld:未找到架构armv7或armv7s链接器错误的符号

我刚刚将我的iPhone 4S软件更新到iOS 7 Beta 2,而我正在最后接触到一个新的应用程序(Phonegap)..不是一个好主意!

完成后,Xcode没有检测到我的iPhone,所以我安装了Xcode 5 beta.在摆弄它之后我终于得到它来检测我的手机.现在唯一的问题是使用的架构存在错误.

以下是产生的错误:

ld: warning: ignoring file /Users/-----------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/--------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a
Undefined symbols for architecture armv7s:
  "_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o
  "_CDVLocalNotification", referenced from:
      -[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o
  "_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_CLASS_$_MainCommandDelegate in MainViewController.o
  "_OBJC_CLASS_$_CDVCommandQueue", referenced from:
      _OBJC_CLASS_$_MainCommandQueue in MainViewController.o
  "_OBJC_METACLASS_$_CDVViewController", referenced from:
      _OBJC_METACLASS_$_MainViewController in MainViewController.o
  "_OBJC_METACLASS_$_CDVCommandQueue", referenced from:
      _OBJC_METACLASS_$_MainCommandQueue in MainViewController.o
  "_CDVPluginHandleOpenURLNotification", referenced from:
      -[AppDelegate application:handleOpenURL:] in AppDelegate.o
  "_OBJC_CLASS_$_CDVViewController", referenced from: …
Run Code Online (Sandbox Code Playgroud)

cpu-architecture static-libraries cordova ios7 xcode5

69
推荐指数
4
解决办法
6万
查看次数

鸭子在C#编译器中输入

注意不是关于如何在C#中实现或模拟duck typing的问题...

几年来,我的印象是某些C#语言特性对语言本身定义的数据结构感到沮丧(这对我来说似乎总是一个奇怪的鸡蛋和鸡蛋场景).例如,我的印象是foreach循环只能用于实现的类型IEnumerable.

从那时起,我开始明白C#编译器使用duck typing来确定是否可以在foreach循环中使用对象,GetEnumerator而不是查找方法IEnumerable.这很有意义,因为它消除了鸡蛋和鸡蛋的难题.

我有点困惑,为什么这不是using块的情况似乎并非如此IDisposable.是否有任何特殊原因编译器不能使用duck typing并查找Dispose方法?造成这种不一致的原因是什么?

或许还有其他东西在IDisposable的引擎盖下进行?

讨论为什么你会永远有未实现IDisposable是这个问题的范围之外的Dispose方法的对象:)

c# compiler-construction idisposable duck-typing

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

C#中CreateObject的等效代码

我在VB6中有一个代码.任何人都可以告诉我如何写它C#.此代码如下:

Set Amibroker = CreateObject("Broker.Application")
Set STOCK = Amibroker.Stocks.Add(ticker)
Set quote = STOCK.Quotations.Add(stInDate)

quote.Open = stInOpen
quote.High = stInHigh
quote.Low = stInlow
quote.Close = stInYcp
quote.Volume = stInVolume


Set STOCK = Nothing
Set quote = Nothing
Run Code Online (Sandbox Code Playgroud)

CreateObjectC#中的等价物是什么?我尝试添加对com对象的引用,但我找不到任何com对象作为Broker.Application或amibroker

c# com

18
推荐指数
3
解决办法
4万
查看次数

给定无效参数时,构造函数应如何操作?

如果一个类有一个构造函数,它将一些值对象作为参数并依赖于它来进行初始化.如果此对象为null,它应该如何反应?

class SomeClass
{
    private SomeData _data; 
    public SomeClass(SomeValueObject obj)
    {
        _data = obj.Data;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个例子,但总的来说:如果构造函数被赋予无效参数,那么它应该如何操作,因此无法正确构造?它应该只是返回而不进行任何初始化?将参数设置为某些默认值?抛出异常?别的什么?

我相信这个问题的答案是"它取决于",但有没有最佳实践等?

constructor

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

使用访客模式从平面DTO构建对象图

我写了一个很好的简单的小域模型,其对象图如下所示:

-- Customer
    -- Name : Name
    -- Account : CustomerAccount
    -- HomeAddress : PostalAddress
    -- InvoiceAddress : PostalAddress
    -- HomePhoneNumber : TelephoneNumber
    -- WorkPhoneNumber : TelephoneNumber
    -- MobilePhoneNumber : TelephoneNumber
    -- EmailAddress : EmailAddress
Run Code Online (Sandbox Code Playgroud)

这个结构与我必须使用的遗留数据库完全不一致,所以我定义了一个平面DTO,其中包含客户图中每个元素的数据 - 我在数据库中有视图和存储过程,这些允许我在这两个方向上使用这种扁平结构与数据进行交互,这一切都很好,花花公子:)

将域模型展平为DTO以进行插入/更新是直截了当的,但我遇到的问题是使用DTO并从中创建域模型...我的第一个想法是实现访问每个元素的访问者客户图,并根据需要从DTO注入值,有点像这样:

class CustomerVisitor
{
    public CustomerVisitor(CustomerDTO data) {...}

    private CustomerDTO Data;

    public void VisitCustomer(Customer customer)
    {
        customer.SomeValue = this.Data.SomeValue;
    }

    public void VisitName(Name name)
    {
        name.Title     = this.Data.NameTitle;
        name.FirstName = this.Data.NameFirstName;
        name.LastName  = this.Data.NameLastName;
    }

    // ... and so on …
Run Code Online (Sandbox Code Playgroud)

c# visitor dto domain-model factory-pattern

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

C#扩展SoapExtension -

背景: 我正在尝试编写一个简单的SoapExtension类来记录来自asmx Web服务的入站/出站Soap消息.在这篇关于msdn的文章之后,我已经能够让事情变得有效了.但是,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码.

问题: 我正在努力掌握的是在示例中处理IO流.我在网上阅读的所有其他文章都以相同的方式处理流...首先获取对原始流的引用,创建内存"工作"流,然后根据需要交换内容.

第一个问题是,在这种情况下,"流链"是什么意思?我对流的理解是,写入任何流将自动写入管道中的"内部"流.如果是这种情况,为什么有必要手动将内容从一个流复制到另一个流?

第二个问题是,在示例复制方法中,他们每次都在创建一个StreamReader和StreamWriter,而不会丢弃它们 - 这是不是给GC带来了额外的压力?在高流量的Web服务上看起来不像你想要的东西......我尝试将两者都包含在使用语句中,但是处理读取器/写入器也关闭了流,这导致了更严重的错误..NET 4有新的Stream.CopyTo(Stream)方法,但对于.NET 3.5来说,更好的方法是什么?

c# soap stream soap-extension asmx

9
推荐指数
1
解决办法
2130
查看次数

T4文本模板 - 是否可以从主机获取编译符号?

背景:

我有一个用C#编写的开源游戏库,它使用不安全的代码,指针算法等高度优化性能.我最近将该库移植到了Windows Phone.不幸的是,Windows Phone根本不支持不安全的代码,所以我不得不使用预处理器指令来丢弃我的源代码,例如:

#if WINDOWS || XBOX
public unsafe struct Foo
#elif WINDOWS_PHONE
public struct Foo
#endif
Run Code Online (Sandbox Code Playgroud)

由于这些指令的数量,代码库变得非常难以理解并且难以维护,所以我一直在探索其他选项 - 其中一个是使用T4的文本模板.

问题:

在走向T4路线太远之前我需要知道的是,是否可以从文本模板中获取编译符号?我已经查看了模板参数,但从外部世界修改它们似乎并不容易.理想情况下,我希望看到的有点像这样:

<# if (Host.CompilationSymbols.Contains("WINDOWS_PHONE") { #>
public struct Foo
<# { #>
Run Code Online (Sandbox Code Playgroud)

如果有人能够对这些问题有所了解,那么这是可能的,我将不胜感激!

.net t4 visual-studio-2010

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

有什么理由我们不能在元组周围有一些语法糖吗?

我希望在C#中看到的是关于元组的更好的语法,例如.

var rgb = (1.0f, 1.0f, 1.0f);
// Inferred to be Tuple<float, float, float>
// Translated to var rgb = Tuple.Create(1.0f, 1.0f, 1.0f)
Run Code Online (Sandbox Code Playgroud)

var x, y, z = rgb;

// Translated to:
//    float x = rgb.Item1;
//    float y = rgb.Item2;
//    float z = rgb.Item3;
Run Code Online (Sandbox Code Playgroud)

C#语言中有什么禁止这个,或者实现它太难/不现实吗?也许还有其他语言功能会与此直接冲突?

请注意,我不是在询问这是否在微软雷达上,或者即使它与他们对C#的愿景保持一致,只是理论上它有明显的阻挡剂.

编辑 以下是其他CLI语言的一些示例

// Nemerle - will use a tuple type from a language specific runtime library
def colour = (0.5f, 0.5f, 1.0f);
def (r, g, b) = colour;

// F# …
Run Code Online (Sandbox Code Playgroud)

c# tuples syntactic-sugar

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

是否有必要从扩展方法中抛出NullReferenceException?

如果我定义一个扩展方法,如下所示:

static public String ToTitleCase(this string instance, CultureInfo culture)
{
    if (instance == null)
        throw new NullReferenceException();

    if (culture == null)
        throw new ArgumentNullException("culture");

    return culture.TextInfo.ToTitleCase(instance);
}
Run Code Online (Sandbox Code Playgroud)

我是否有必要检查字符串实例是否为null并自己抛出空引用异常?或者CLR在这种情况下是否像实例方法一样处理扩展方法并为我处理检查/抛出?

我知道扩展方法只是静态方法的语法糖,也许C#编译器在编译时添加了检查?请澄清 :)

c# extension-methods

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

使用discriminator作为子类的子类

问题似乎很通用,但我是fluentnhibernate的新手,我的所有搜索都没有发现任何有用的东西.

我有一个类似于这个的类层次结构:

public class Person
{
    public virtual int Id { get; protected set; }
    public virtual string GivenName { get; set; }
    public virtual string FamilyName { get; set; }
}

public class Employee : Person
{
    public virtual string WhoAmI { get { return "I am just an Employee"; } protected set { } }
} 

public class Boss : Employee
{
    public override string WhoAmI { get { return "I am the boss."; } protected set { …
Run Code Online (Sandbox Code Playgroud)

c# fluent-nhibernate

5
推荐指数
1
解决办法
154
查看次数