변환하는 값의 java.util.목록하는 문자열 또는 다른 형식으로 정상적인 vb

StackOverflow https://stackoverflow.com//questions/9708320

문제

내 응용 프로그램에서,나는 당 품목에서는 마이크로소프트 프로젝트를 사용하여 파일 mpxj-의 항목 중 하나가 필요로하는 전임자입니다.는 방법을 당겨하는 전임자를 사용하여 빌드 기능에서의 mpxj 반환하는 유형의 java.util.목록을 저장할 수 있어 이 변수 개체로,그러나 나는 방법을 찾을 필요가있을 가지고 형식으로 데이터를 내가 쉽게 사용할 수 있습니다 그래서 저장할 수 있으로 데이터베이스입니다.아래 나열된 코드의 라인을 사용하고 당기는 전임자에서 프로젝트 파일입니다.

Dim predecessors = task.getPredecessors

그리고 여기 결과하는 경우 추적점을 얻을에는 값의 전임자

[[Relation [Task id=4 uniqueID=45577 name=Standards Training - Round 2] -> [Task id=3 uniqueID=45576 name=Process Excellence Training]]]

는 경우에도 얻을 수 있는 위의 문자열로,나는 일할 수 있는 충분히 데이터를 얻기 위해 내가 필요합니다.위 예제는 어디에 있는 1 개 품목에서는 전신 목록은,하지만 때로는 거기에 여러 개의 항목입니다.여기서의 예법이 있을 때에 여러 개의 항목입니다.

[[Relation [Task id=63 uniqueID=45873 name=Complete IP Binder] -> [Task id=47 uniqueID=45857 name=Organizational Assessment]], [Relation [Task id=63 uniqueID=45873 name=Complete IP Binder] -> [Task id=49 uniqueID=45859 name=Document Deliverables]], [Relation [Task id=63 uniqueID=45873 name=Complete IP Binder] -> [Task id=56 uniqueID=45866 name=Infrastructure Deliverables]], [Relation [Task id=63 uniqueID=45873 name=Complete IP Binder] -> [Task id=58 uniqueID=45868 name=IT Deliverables]], [Relation [Task id=63 uniqueID=45873 name=Complete IP Binder] -> [Task id=60 uniqueID=45870 name=Organizational Deliverables]]]

당신의 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책 3

tostring을 사용하여 오른쪽 및 왼쪽으로이를 완료 할 수 있었고, 훨씬 빨리

이유를 삭제 한이 이유를 알지 못합니다.

다른 팁

C#3.5 이상을 만드는,확장하는 방법들을 입력 안전에 열거자에 대한 자세한 목록은 정말 쉽기 때문에 yield 키워드입니다.당신은 그것을 할 수 있습니다.

public static class JavaExtensions
{

        public static IEnumerable<T> toIEnumerable<T>(this java.util.List list)
        {
            if (list != null)
            {
                java.util.Iterator itr = list.iterator();

                while (itr.hasNext())
                {
                    yield return (T)itr.next();
                }
            }
        }

}

로를 포함하는 네임스페이스 이 확장은 눈에 보이는 코드,다음을 수행할 수 있습 다음과 같은 작업의 전임자:

foreach (var relation in task.getPredecessors().toIEnumerable<Relation>())
{
   Task sourceTask = relation.getSourceTask();
   //etc.
}

불행하게도 당신을 위해,당신은 당신을 사용하는 VB.Net.나는 당신과 같은 배를 타고,그리고 끝났을 만드는 별도의 C#클래스 라이브러리는 내가 참조에서 내 VB ASP.NET 프로젝트입니다.는 방법의 혜택을 얻을 수 있 C#구문에서 다루는 IKVM 자바 스타일 객체를 변환하지 않고 내 전체 프로젝트입니다.

원하지 않는 경우에는 사용할 수 있습니다 온라인 코드 변환기 을 변경하는 존의 코드(사용하지 않는 모든 C#만)VB 와 그것을 포함에서 귀하의 프로젝트입니다.

중요한 것은 당신의 경우에는 당신이 필요로 하지 않는 작동하는 문자열 표현으로 당시에 디버거(는 toString()을 호출하여 관계 개체 목록에).이 getPredecessors() 기능 목록을 반환 Relation 체입니다.

Dim predecessorList as java.util.List = task.getPredecessors()
Dim iter as java.util.Iterator = predecessorList.iterator()

Do While iter.hasNext()
    Dim curRelation as Relation = iter.next()

    'gets the left side of the relationship (the task you are dealing with)
    Dim sourceTask as Task = curRelation.getSourceTask()

    'gets the task that is the predecessor to the  'source' task
    Dim targetTask as Task = curRelation.getTargetTask()

    'from here you can call methods on the Task objects to get their other properties
    'like name and id
Loop

IKVM이 생성 한 .NET 어셈블리를 사용할 때 Java 컬렉션을 사용하는 두 가지 방법이 있습니다.첫 번째는 Java Weeth와 Iterator로 작업하는 일을 수행하는 것입니다.

java.util.List predecessors = task.getPredecessors();
java.util.Iterator iter = predecessors.iterator();
while (iter.hasNext())
{
   Relation rel = (Relation)iter.next();
   System.Console.WriteLine(rel);
}
.

다른 방법은이를 숨기기 위해 작은 "유용성"코드를 추가하는 것입니다.

foreach(Relation rel in ToEnumerable(task.getPredecessors()))
{
   System.Console.WriteLine(rel);
}
.

이렇게하려면 "Toenumerable"방법을 만듭니다.

private static EnumerableCollection ToEnumerable(Collection javaCollection)
{
   return new EnumerableCollection(javaCollection);
}
.

및 이에이터 사용을 숨기는 enumerableCollection 클래스 :

class EnumerableCollection
{
    public EnumerableCollection(Collection collection)
    {
        m_collection = collection;
    }

    public IEnumerator GetEnumerator()
    {
        return new Enumerator(m_collection);
    }

    private Collection m_collection;
}


public struct Enumerator : IEnumerator
{
    public Enumerator(Collection collection)
    {
        m_collection = collection;
        m_iterator = m_collection.iterator();
    }

    public object Current
    {
        get
        {
            return m_iterator.next();
        }
    }

    public bool MoveNext()
    {
        return m_iterator.hasNext();
    }

    public void Reset()
    {
        m_iterator = m_collection.iterator();
    }

    private Collection m_collection;
    private Iterator m_iterator;
}
.

이 작업을 수행하는 것이 더 흥미로운 방법은 확장 메소드를 사용 하여이 기능을 추가하는 것입니다.Java 컬렉션 클래스는 코드를 조금 덜 어지럽게 만들 수 있습니다.다음 릴리스에서 MPXJ의 일부로 유용한 확장 방법을 포함하는 어셈블리를 시도하고 선적 할 계획입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top