11/17/2008

C# 4.0

В C# 4.0 добавлены новые возможности. Анонимные объекты можно передавать в метод и обращаться к свойствам/методам объекта:


public Form1()

{

var item = new { Id = 1, Value = "v1"};

Write(item);


var data = new { Id = 1, Name = "d1" };

Write(data);

}

public static void Write(dynamic value)

{

System.Diagnostics.Trace.Write(value.Id);

}

Появляется возможность приводить тип обобщенных делегатов:

delegate T Provider<out T>();
...

Provider<int> vp = delegate
{
return 1;
};
Provider<object> op = vp;
vp =(Provider<int>) op;

Добавлены значения параметров по-умолчанию и именованные параметры:

public void Method(int id, string name = "name", int value = 1)
{
}

вызывать можно так:
Method(1);
Method(1, "my name");
Method(1, value: 10);

11/09/2008

Silverlight 2.0: ServiceReferences.ClientConfig

Если в .ClientConfig-файле нет необходимых данных, то попытка обратиться к wcf-сервису из Silverlight 2.0 приводит к ошибке: System.Collections.Generic.KeyNotFoundException was unhandled by user code, Message="The given key was not present in the dictionary."

Пример правильного конфигурационного файла.

[ServiceReferences.ClientConfig]

<configuration>

    <system.serviceModel>

        <bindings>

            <basicHttpBinding>

                <binding
name="WSHttpBinding_IService1">

                    <security
mode="None" />

                </binding>

            </basicHttpBinding>

        </bindings>

        <client>

            <endpoint
address="http://localhost:3646/Service1.svc"
binding="basicHttpBinding"

             bindingConfiguration="WSHttpBinding_IService1"
contract="ServiceReference1.IService1"

             name="WSHttpBinding_IService1" />

        </client>

    </system.serviceModel>

</configuration>