2016-07-22 7 views
0

Последующий от this вопрос.Аккуратный подход к отличному сильному типу к анонимному типу в C#

Я хотел бы отличить от Strongly Typed до Anonymous Type Результат. Например, следующий класс должен быть преобразован в объект анонимного типа во время выполнения. Я изо всех сил пытаюсь добиться этого.

public sealed class CountryModel 
{ 
    public int CountryId { get; set; } 
    public string CountryName { get; set; } 
    public string CountryCode { get; set; } 
    public bool IsActive { get; set; } 
} 

Использование:

new CountryModel() 
{ 
    CountryCode = "AOE", 
    CountryId = 2, 
    CountryName = "Anywhere on Earth", 
    IsActive = true 
}; 

Тип Анонимные:

выше строго типизированных должны быть преобразованы в Анонимных и конечный результат будет выглядеть следующим образом (захваченной через Immediate Window):

{ CountryId = 2, CountryName = "Anywhere on Earth", CountryCode = "AOE", IsActive = true } 
    CountryCode: "AOE" 
    CountryId: 2 
    CountryName: "Anywhere on Earth" 
    IsActive: true 

Примечание: Мне нужно, чтобы это кастинг выполнялся так, чтобы я мог передать объект в Dapper.SimpleCRUD и Dapper ORM Library.

+3

Почему вы хотите это сделать? –

+0

Это не анонимный объект, он может быть помещен в поле «объект». Но это не анонимный –

+0

Добавил примечание к моему вопросу. Но здесь вы снова «нуждаетесь в этом приведении, чтобы я мог передать объект Dapper.SimpleCRUD и Dapper ORM Library» –

ответ

2

Попробуйте это:

var obj = new { 
    CountryCode = item.CountryCode, 
    CountryId = item.CountryId, 
    CountryName = item.CountryName, 
    IsActive = item.IsActive 
    }; 
+2

Не знаю, почему это is * was * downvoted; он буквально * запрашивает (хотя вы действительно можете сделать это terser - просто 'new {item.CountryCode, item.CountryId, ...}' отлично - он отображает имена). Вопрос в моем уме, однако, заключается в том, является ли это * полезным или необходимым * для этого - это действительно вопрос для ОП, хотя –

+0

Не уверен, о чем вы говорите. Этот ответ не был нивелирован. – Yar