Так как вопрос не определил.NET, это должно работать в VBScript или VB6.
Dim objFSO, strFolder
strFolder = "C:\Temp"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(strFolder) Then
objFSO.CreateFolder(strFolder)
End If
Вы не можете преобразовать, потому что это разные типы. У вас есть два варианта:
1) Измените класс так, чтобы PersonWithAge наследовал от person.
class PersonWithAge : Person
{
public int Age { get; set; }
}
2) Создайте новые объекты:
IEnumerable<Person> p = pwa.Select(p => new Person { Id = p.Id, Name = p.Name });
Используйте Выберите вместо Cast , чтобы указать, как выполнять преобразование из одного типа в другой:
IEnumerable<Person> p = pwa.Select(x => new Person { Id = x.Id, Name = x.Name });
Также как PersonWithAge
всегда будет содержать те же свойства, что и Person
, плюс еще пара, было бы лучше унаследовать его от Person
.
Вы не можете просто преобразовать два несвязанных типа друг в друга. Вы можете сделать возможным преобразование PersonWithAge в Person, разрешив PersonWithAge наследовать от Person. Поскольку PersonWithAge, очевидно, является частным случаем Person, это имеет большой смысл:
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class PersonWithAge : Person
{
// Id and Name are inherited from Person
public int Age { get; set; }
}
Теперь, если у вас есть IEnumerable
с именем peopleWithAge
, то peopleWithAge. Cast
будет работать.
В VS 2010 вы даже сможете полностью пропустить приведение типов и сделать (IEnumerable
, поскольку IEnumerable
ковариантен в .NET 4.
Сделать PersonWithAge наследованием от Person.
] Примерно так:
class PersonWithAge : Person
{
public int Age { get; set; }
}
Вы можете сохранить IEnumerable
и не преобразовывать его в IEnumerable
. Просто добавьте неявное преобразование, чтобы преобразовать объект PersonWithAge
в Person
, когда вам нужно.
class Person
{
public int Id { get; set; }
public string Name { get; set; }
public static implicit operator Person(PersonWithAge p)
{
return new Person() { Id = p.Id, Name = p.Name };
}
}
List<PersonWithAge> pwa = new List<PersonWithAge>
Person p = pwa[0];
вы можете захотеть изменить свой код, чтобы он выглядел примерно так:
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class PersonWithAge : Person
{
public int Age { get; set; }
}